【问题标题】:Rotating an object by the own axis?用自己的轴旋转物体?
【发布时间】:2013-07-02 13:57:47
【问题描述】:

我想创建一个可以用键盘控制的箭头! xz-plain 上的旋转效果很好,但我不能让它按自己的 z 轴旋转。

所以我不想使用系统轴,我想要一个相对于箭头的轴!

from visual import *
from threading import Thread



class Pfeil(frame, Thread):
     "modelliert einen Pfeil"
def __init__(self, pos=(0,0,0), axis=(1,0,0)):
    frame.__init__(self, pos=pos, axis=axis)
    Thread.__init__(self)
    selfpointer = arrow(frame=self, pos=(0,2,1), axis=(5,0,0), shaftwidth=1)

def tasten(self):
    "Methode"
    if scene.kb.keys:
        taste=scene.kb.getkey()
        if taste=='left':
            self.rotate(angle=radians(5), axis=(0,1,0), origin=self.pos)
            print(self.axis)

        if taste=='right':
            self.rotate(angle=radians(-5), axis=(0,1,0), origin=self.pos)
            print(self.axis)

        if taste=='up':
            self.rotate(angle=radians(5), axis=(0,0,1), origin=self.pos)
            print(self.axis)


def run(self):
    while True:
        self.tasten()

抱歉,我的代码太笨了,无法在这里粘贴我的代码,所以这里上传... Upload

感谢您的帮助,如果您不明白我的问题,请发表评论!

【问题讨论】:

    标签: python vpython


    【解决方案1】:

    你只是在无序地进行转换。

    您想要进行“本地”转换,这非常简单。将箭头移回原点,绕 z 轴旋转,然后将其移回原来的位置。

    如果您为箭头保留一个局部坐标系,这会更容易完成,但对于您的目的来说,这可能是多余的。

    【讨论】:

    • 好吧,但是当它的轴 = (0,0,1),“看”向我时,我怎样才能将它旋转到具有 (0,1,0) 的轴?
    • 沿 x 轴旋转 -90 度(或 -pi/4 弧度)。
    猜你喜欢
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 2013-05-12
    • 2014-05-20
    • 2017-10-13
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多