Я разрабатываю приложение, которое включает линейные графики.Сейчас у меня есть линия с тремя точками: одна в центре для перемещения всей линии, а две другие, ниже и выше по линии, для ее вращения.Проблема, которую я имею, состоит в том, чтобы выяснить, как повернуть две другие точки, когда пользователь касается любой из них.
На самом деле я пока мало что сделал с точками вращения, но вот мой код:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch* touch = [touches anyObject];
CGPoint point = [touch locationInView:graph];
if (CGRectContainsPoint(moveDot.frame, point)) {
moveDotIsTouched = YES;
}
if (CGRectContainsPoint(rotateDot1.frame, point)) {
rotateDot1IsTouched = YES;
}
if (CGRectContainsPoint(rotateDot2.frame, point)) {
rotateDot2IsTouched = YES;
}
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch* touch = [touches anyObject];
CGPoint point = [touch locationInView:graph];
if (moveDotIsTouched) {
if ((point.y > 0) && (point.y < 704))
{
if (point.y < 64) {rotateDot1.hidden = YES;}
else {rotateDot1.hidden = NO;}
if (point.y > 640) {rotateDot2.hidden = YES;}
else {rotateDot2.hidden = NO;}
moveDot.center = CGPointMake(moveDot.center.x, point.y);
rotateDot1.center = CGPointMake(moveDot.center.x+64, moveDot.center.y-64);
rotateDot2.center = CGPointMake(moveDot.center.x-64, moveDot.center.y+64);
graph.base = -(point.y)/32 + 11;
if (graph.base < 0) {[functionField setText:[NSString stringWithFormat:@"y = %.2fx %.2f", graph.slope, graph.base]];}
else if (graph.base > 0) {[functionField setText:[NSString stringWithFormat:@"y = %.2fx + %.2f", graph.slope, graph.base]];}
else {[functionField setText:[NSString stringWithFormat:@"y = %.2fx", graph.slope]];}
[yintField setText:[NSString stringWithFormat:@"%.2f", graph.base]];
[self changeTable];
}
}
[graph setNeedsDisplay];
}
Числа, связанные с позицией точек, измеряются в пикселях.Единственный способ, которым я действительно могу думать о вращении внешних точек, - это вычисление радиуса и проверка того, что точки находятся в пределах радиуса, но мне интересно, нет ли чего-то более простого, чем это.Кто-нибудь знает простой способ перемещения UIImageView по кругу?