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:

Comments
Post a Comment