我需要旋轉在WPF單個座標 - C#。旋轉3D座標
值x, y,z
存儲在GeometryModel3D[]
點。
例如,座標(x,y,z)在spefic-axis處旋轉。
[UPDATE]使用旋轉變換的四元數。問題是我沒有得到新的矢量值,當我查看點雲時,它似乎在Meshlab中被拖走。
Matrix3D m = Matrix3D.Identity;
Quaternion q = new Quaternion(new Vector3D(320/2, y, maxDepth - minDepth), 90);
m.Rotate(q);
Vector3D myVectorToRotate = new Vector3D(((TranslateTransform3D)points[i].Transform).OffsetX, ((TranslateTransform3D)points[i].Transform).OffsetY, ((TranslateTransform3D)points[i].Transform).OffsetZ);
m.Transform(myVectorToRotate);
pointcloud.Add(new Point3D(myVectorToRotate.X,myVectorToRotate.Y,myVectorToRotate.Z));
我仍然無法獲得正確的價值轉換。
我想對從kinect掃描的第二個點雲應用旋轉變換。由於第一次掃描數據不涉及旋轉,捕獲數據和用法的代碼如下所示:
for (int y = 0; y < 240; y += resolution)
{
for (int x = 0; x < 320; x += resolution)
{
if (((TranslateTransform3D)points[i].Transform).OffsetZ >= minDepth
&& ((TranslateTransform3D)points[i].Transform).OffsetZ <= maxDepth)
{
pointcloud.Add(new Point3D(((TranslateTransform3D)points[i].Transform).OffsetX, ((TranslateTransform3D)points[i].Transform).OffsetY, ((TranslateTransform3D)points[i].Transform).OffsetZ));
}
i++;
}
}
的例子是由繞y軸旋轉90度的一個點? – sinelaw
是的,但我的代碼顯示似乎錯了,因爲我不知道如何設置的矩陣.. – akuhero
[鏈接]的Matrix3D結構(http://msdn.microsoft.com/en-us/library/system.windows.media .media3d.matrix3d(v = vs.90).aspx) – akuhero