3D坐标系:3D笛卡尔坐标系和3D柱面坐标系的区别

在做一个WPF集成SharpDX的功能。

遇见一个奇葩问题:MeshBuilder.AddBox(Point3D center, double xlength, double ylength, double zlength, BoxFaces faces);这个方法里面的BoxFaces 参数很让人迷惑。

查看了一下源码:

BoxFaces下有如下成员:

Top = PositiveZ,

Bottom = NegativeZ,

Left = NegativeY,

Right = PositiveY,

Front = PositiveX,

Back = NegativeX,

...

那么问题就来了,这里的Top 、Bottom 、Left 、Right 、Front 、Back 和主界面的ShowViewCube里那些F B L R U D所指的方向不一样。。

如图:

               


ShowViewCube(3D笛卡尔坐标系--右手)                            BoxFaces(3D柱面坐标系--右手)


这可咋整,让我好迷惑,以后这参数咋设置,乱七八糟的。。。

于是各种百度,最后在一篇博文里看到了对于3D坐标系的介绍,解决了我的问题。


到这里还没结束,用MeshBuilder.AddBox(Point3D center, double xlength, double ylength, double zlength, BoxFaces faces);添加的面(比如图片)

显示出来却是颠倒的,具体效果就是沿着X+方向顺时针旋转了90°,在这里再做一个逆旋转回去就行了。

RotateTransform3D rota = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(1, 0, 0), 90));// 把笛卡尔坐标系的点反转回柱面坐标系(绕X+轴顺时针旋转90°)
Vector3D center = new Vector3D(10,10,10);
center = rota.Transform(center);



-----------------------------------------------------------------以下为引用--------------------------------------------------------------------------------------

http://heweiyou.blog.51cto.com/5656256/1129911 感谢原博主的文章。。。)

3D笛卡尔坐标

3D笛卡尔坐标系故名思议则是在2D坐标系的基础上增加了一个维度,命名其为z轴,当然z轴也应有其正方向,因此出现了两种坐标系:左手坐标系(LHS)和右手坐标系(RHS)(用左手或右手握住z轴,如果其他手指从x轴绕到y轴,则大拇指将指向z轴的正方向)。

 

          

             

3D柱面坐标系

3D柱坐标系较为接近2D极坐标系,在rθ的基础上多了一个z的值,如图:

  

          

           

其中:

x = r*cosθ

y = r*sinθ

z = z

r =sqrt(x*x+y*y)

tanθ = y/x

3D球面坐标系

使用两个角度和到原点的距离来定义点,如图:

                 

           

    其中:

    r = p*sinφ

    x = r*cosθ

    y = r*sinθ





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值