gpt4 book ai didi

ios - 如何确定具有角度的最近 CGPoint 和另一个 CGPoint

转载 作者:行者123 更新时间:2023-11-29 04:08:50 27 4
gpt4 key购买 nike

我计算两个 CGPoint 之间的角度:

//calculate radian and degree
CGPoint diff = ccpSub(center, location);//return ccp(v1.x - v2.x, v1.y - v2.y);
float rads = atan2f( diff.y, diff.x);
float degs = -CC_RADIANS_TO_DEGREES(rads);
NSLog(@"Rad %.2f Degs %.2f",rads,degs);

现在,在另一个函数中,我有一个预先知道的 CGPoint 和上述函数的度数,我想计算满足度数的最近点。

我在想也许下面的代码会对我有所帮助,但是在下面的代码中起点和旋转点是已知的,在我的情况下我只知道起点。

-(void) rotateAroundPoint:(CGPoint)rotationPoint angle:(CGFloat)angle {
CGFloat x = cos(CC_DEGREES_TO_RADIANS(-angle)) * (self.position.x-rotationPoint.x) - sin(CC_DEGREES_TO_RADIANS(-angle)) * (self.position.y-rotationPoint.y) + rotationPoint.x;
CGFloat y = sin(CC_DEGREES_TO_RADIANS(-angle)) * (self.position.x-rotationPoint.x) + cos(CC_DEGREES_TO_RADIANS(-angle)) * (self.position.y-rotationPoint.y) + rotationPoint.y;

假设我有一个点 800,600,度数为 70,我如何计算与该点和度数最接近的点?

编辑:::

通常在我的游戏中, Sprite 是通过按钮移动的,因此按下按钮时会处理所有旋转、移动、速度等 [sprite moveToPreGivenPostion:CGPoint]

但是现在添加了指南针,当用户在指南针上选择角度时,我需要沿指南针上的度数方向移动 Sprite ,因为 [sprite moveToPreGivenPostion:CGPoint]已经处理了旋转和其他东西,我只是想确定应该将什么 CGPoint 发送到 moveToPreGivenPostion功能。

最佳答案

正如@trumpetlicks所说,你找不到这样最近的点,但我想我明白你想要什么以及该函数-(void)rotateAroundPoint:(CGPoint)rotationPoint angle:(CGFloat)angle您尝试使用的方法完全可以实现您想要的目的。

enter image description here

您所需要做的就是选择 float 半径。

你知道你当前的点,假设你的半径是 1,基本上你可以计算你之前的点,没有度数,假设 0 度在你的点左边,假设你的点是 200,200 1 半径 0 度,您之前的点自动变为 199,200。现在你有了一个引用点,所以现在计算你想要移动 Sprite 的点:

//choose a feasable radius
float radius = 0.5;
//position_ is your preknown position as you said
//find a the point to roate
//position_.x-radius is always 0 degrees of your current point
CGFloat x = cos(rads) * ((position_.x-radius)-position_.x) - sin(rads) * ((position_.y)-position_.y) + position_.x;
CGFloat y = sin(rads) * ((position_.x-radius)-position_.x) + cos(rads) * ((position_.y)-position_.y) + position_.y;

//get the new point
CGPoint newLocation = ccp(x, y);

关于ios - 如何确定具有角度的最近 CGPoint 和另一个 CGPoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14736097/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com