c# - Rotation between vectors -


i have next problem. there system of objects. ray hit them all. , stay along 0z axis.

next add mirror between 2 random objects. , @ last need rotate objects after mirror around mirror point (mirror position or point o). , ray should hit them, there isn't mirror. need rotation angles around x,y,z-axes?

i have x,y,z-angles of mirror rotation , mirror position (point o). tried. first got vector along axis 0z first "reference" object mirror (ao). applied transform x,y,z-angles mirror vector - , got normal vector form mirror (on). @ last calculate vector of reflected ray using ao , on (dot , lengths).

what need next? or there way angles?

p.s. write code on c#. structure of point or vector - point3d(double x, double y, double z)

var mirrorposition = mirrordata.position; var referenceposition = referenceobject.position; var vectortomirror = mirrorposition.substract(referenceposition); var mirrorrotation = transformation.createrotationmatrix(mirrordata.xangle,  mirrordata.yangle, mirrordata.zangle); var mirrornormal = new point(0,0,1).multiply(-1).transform(mirrorrotation); var vectorreflect = reflectvector(vectortofoldmirror, mirrornormal); 

transformation.createrotationmatrix - creates rotation matrix angles aroung 0x, 0y, 0z , central point (0,0,0).

substract = vector 1 - vector2. multiply = vector1 * vector2 or vector * double.

private point3d reflectvector(point3d source, point3d reflect) {      var dot = getdotproduct(source, reflect);      return source + ((-2 * dot) * reflect); }  private double getdotproduct(point3d vector1, point3d vector2) {     return vector1.x * vector2.x         + vector1.y * vector2.y         + vector1.z * vector2.z; } 

rotated system:

img


Comments

Popular posts from this blog

neo4j - finding mutual friends in a cypher statement starting with three or more persons -

php - How to remove letter in front of the word laravel -

minify - Minimizing css files -