WPF - C# で単一の座標を回転する必要があります。
x, y,z
ポイントで格納された値GeometryModel3D[]
。
たとえば、座標(x, y, z) は特定の軸で回転します。
[更新] クォータニオンを使用した回転変換。問題は、新しいベクトル値を取得できず、ポイント クラウドを表示すると、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 からスキャンした 2 番目の点群に回転変換を適用したいと考えています。1 回目のスキャン データはローテーションを含まないため、キャプチャ データと使用方法のコードは次のようになります。
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++;
}
}