python - 2 道数学题

发布于 2024-10-16 04:38:14 字数 275 浏览 2 评论 0原文

嘿,我正在使用 pyGame,我想:

A)创建一个返回两点之间角度的函数。我尝试使用 math.atan2 执行此操作,但得到的回报非常奇怪。我用 (delta X, deltaY) 和 (deltaY, deltaX) 尝试了这个。有什么建议吗?

B) 给定长度和角度,使用这两个值从 0 返回一个点。 例如,使用 (length,angle) 的 LengthDir(2,45) 将返回 (2,2)。

感谢您的帮助。我在互联网上进行了搜索,但找不到任何可以帮助我的东西......

Hey, I'm using pyGame and I want to:

A) make a function that returns the angle between two points. I've tried doing this with math.atan2 and I'm getting really wierd returns. I tried this with both (delta X, deltaY) and (deltaY, deltaX). Any suggestions?

B) given a length and an angle, return a point using those two from 0.
For example, LengthDir(2,45) using (length,angle) would return (2,2).

Thanks for the help. I've searched all over the internet and I couldn't find anything to help me...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

雨轻弹 2024-10-23 04:38:15

math.atan2 返回 弧度。如果需要度数,请将结果乘以 180/π。

def A(dx, dy):
  return math.atan2(dy, dx) * 180 / math.pi

同样,数学中的所有三角函数都以弧度运算。如果输入度数,则需要先乘以π/180。

def LengthDir(length, angle):
  radian_angle = angle * math.pi / 180
  return (length * math.cos(radian_angle), length * math.sin(radian_angle))

Python提供了方便的函数math. Degreesmath.radians 所以你不需要需要记住常数 180/π。

def A(dx, dy):
  return math.degrees( math.atan2(dy, dx) )

def LengthDir(length, angle):
  radian_angle = math.radians(angle)
  return (length * math.cos(radian_angle), length * math.sin(radian_angle))

math.atan2 returns radians. If you need degree, multiply the result by 180/π.

def A(dx, dy):
  return math.atan2(dy, dx) * 180 / math.pi

Similarly, all trigonometric functions in math operate in radians. If you input a degree, you need to multiply by π/180 first.

def LengthDir(length, angle):
  radian_angle = angle * math.pi / 180
  return (length * math.cos(radian_angle), length * math.sin(radian_angle))

Python provides the convenient functions math.degrees and math.radians so you don't need to memorize the constant 180/π.

def A(dx, dy):
  return math.degrees( math.atan2(dy, dx) )

def LengthDir(length, angle):
  radian_angle = math.radians(angle)
  return (length * math.cos(radian_angle), length * math.sin(radian_angle))
傾城如夢未必闌珊 2024-10-23 04:38:15

您可以使用 cmath 中的函数在矩形和矩形之间进行转换极坐标。例如:

import math, cmath

def LengthDir(r, phi):
   c = cmath.rect(r, math.radians(phi))
   return (c.real, c.imag)

def AngleBetween((x1, y1), (x2, y2)):
   phi = cmath.phase(x2 + y2*j) - cmath.phase(x1 + y1*j)
   return math.degrees(phi) % 360

You could use the functions in cmath to convert between rectangular and polar coordinates. For example:

import math, cmath

def LengthDir(r, phi):
   c = cmath.rect(r, math.radians(phi))
   return (c.real, c.imag)

def AngleBetween((x1, y1), (x2, y2)):
   phi = cmath.phase(x2 + y2*j) - cmath.phase(x1 + y1*j)
   return math.degrees(phi) % 360
温暖的光 2024-10-23 04:38:15
import math

def dist(dx,dy):
    return math.sqrt(dx*dx + dy*dy)

def ang(dx, dy):
    return math.degrees(math.atan2(dy, dx))

def offs(dist, ang):
    ang = math.radians(ang)
    dx = dist * math.cos(ang)
    dy = dist * math.sin(ang)
    return dx,dy

dist(2,2) -> 2.8284
ang(2,2) -> 45.0
offs(2, 45) -> (1.414, 1.414)
import math

def dist(dx,dy):
    return math.sqrt(dx*dx + dy*dy)

def ang(dx, dy):
    return math.degrees(math.atan2(dy, dx))

def offs(dist, ang):
    ang = math.radians(ang)
    dx = dist * math.cos(ang)
    dy = dist * math.sin(ang)
    return dx,dy

.

dist(2,2) -> 2.8284
ang(2,2) -> 45.0
offs(2, 45) -> (1.414, 1.414)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文