他的回复:
/// ////// /// 旋转点/// 旋转轴,长度 模似乎必须是1 ,需要 向量缩放_简单缩放()/// 旋转角弧度public static void 旋转(三维点 v, 三维点 n, double Q){/*(v - (v.n)n)Cos(Q) + (n x v)Sin(Q) + (v.n)n *//* 旧式的,未查资料double Q_cos = Math.Cos(Q), Q_sin = Math.Sin(Q), Q_cos_1 = 1 - Q_cos;double vn_点积 = 向量乘积_点积(v, n);三维点 nv_叉积 = 向量乘积_叉积(n, v);v.x = (v.x - vn_点积 * n.x) * Q_cos + nv_叉积.x * Q_sin + vn_点积 * n.x;v.y = (v.y - vn_点积 * n.y) * Q_cos + nv_叉积.y * Q_sin + vn_点积 * n.y;v.z = (v.z - vn_点积 * n.z) * Q_cos + nv_叉积.z * Q_sin + vn_点积 * n.z;*/double Q_cos = Math.Cos(Q), Q_sin = Math.Sin(Q), Q_cos_1 = 1 - Q_cos,vx = v.x, vy = v.y, vz = v.z,nxy = n.x * n.y, nyz = n.y * n.z, nxz = n.x * n.z,nxQ_sin = n.x * Q_sin, nyQ_sin = n.y * Q_sin, nzQ_sin = n.z * Q_sin;v.x =(n.x * n.x * Q_cos_1 + Q_cos) * vx +(nxy * Q_cos_1 - nzQ_sin) * vy +(nxz * Q_cos_1 + nyQ_sin) * vz;v.y =(nxy * Q_cos_1 + nzQ_sin) * vx +(n.y * n.y * Q_cos_1 + Q_cos) * vy +(nyz * Q_cos_1 - nxQ_sin) * vz;v.z =(nxz * Q_cos_1 - nyQ_sin) * vx +(nyz * Q_cos_1 + nxQ_sin) * vy +(n.z * n.z * Q_cos_1 + Q_cos) * vz;}