右转语句python中怎么写_基于x,y坐标系的左转或右转检测算法

看3个点p0,p1和{},你可以看到两个向量{}和{}的相对方向。一个简单的方法是计算两个向量之间的叉积。叉积的x和y分量都是0,因为这两个向量都在xy平面上。所以只需要计算叉积的z分量。在

如果叉积的z分量是正的,你知道第二个向量相对于第一个向量向左,因为第一个向量,第二个向量,和一个正z方向的向量都是右手的。如果叉积为负,则第二个向量相对于第一个向量指向右侧。在

我使用了我疯狂的Python技巧(我大约每年使用一次Python…)将其放入下面的代码中。即使在中间一点,也只能在右边的一点上计算出。为了实现这一点,前几行被保存起来,而它们的打印延迟了。实际计算在calcDir()函数中。在import sys

fileName = sys.argv[1]

dataFile = open(fileName, 'r')

def calcDir(p0, p1, p2):

v1x = float(p1[0]) - float(p0[0])

v1y = float(p1[1]) - float(p0[1])

v2x = float(p2[0]) - float(p1[0])

v2y = float(p2[1]) - float(p1[1])

if v1x * v2y - v1y * v2x > 0.0:

return 'Left'

else:

return 'Right'

lineIdx = 0

for line in dataFile:

line = line.rstrip()

lineIdx += 1

if lineIdx == 1:

print line

elif lineIdx == 2:

line0 = line

print line0

elif lineIdx == 3:

line1 = line

else:

line2 = line

dir = calcDir(line0.split()[1:], line1.split()[1:], line2.split()[1:])

print line1 + ' ' + dir

line0 = line1

line1 = line2

print line2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值