Вычисление точки на окружности круга от угла в C#?

<ion-slides>        
      <ion-slide  *ngFor="let img of images [options]="opts">
        <img src="{{img}}.jpg">
      </ion-slide>
    </ion-slides>

КОМПОНЕНТ

  @Component({
    templateUrl: 'build/pages/test/test.html',
})

export class TestPage implements OnInit{
    images= [1,2,3];
    opts: any;
    constructor() {}
    ngOnInit() {
            this.opts = {initialSlide: 5}
    }

}
40
задан Jonas 6 February 2012 в 14:21
поделиться

4 ответа

Вы забыли добавлять центральную точку:

result.Y = (int)Math.Round( centerPoint.Y + distance * Math.Sin( angle ) );
result.X = (int)Math.Round( centerPoint.X + distance * Math.Cos( angle ) );

Остальные должны быть в порядке... (какие странные результаты Вы получали? Можно ли дать точный вход?)

34
ответ дан MartinStettner 27 November 2019 в 01:53
поделиться

Во-первых, так как Вы находитесь в радианах, вероятно, выгодно определить Ваш угол как таковой:

double angle = (Math.PI / 3); // 60 degrees...

Сами функции хорошо работают. Округление будет только влиять на Ваш ответ, если Ваше расстояние будет достаточно достаточно мало. Кроме этого, ответы должны выйти очень хорошо.

Если это - округление, Вы волнуетесь по поводу, помните, что по умолчанию.NET делает округление банкира, и можно хотеть:

result.X = (int)Math.Round(centerPoint.X + distance * Math.Cos(angle), MidpointRounding.AwayFromZero);
result.Y = (int)Math.Round(centerPoint.Y + distance * Math.Sin(angle), MidpointRounding.AwayFromZero);

вместо этого.

Кроме того, в вопросе Вы хотите расстояние X и поворачиваете Y... Я предполагаю, что Вы не связываете это с точкой (X,Y), потому что это полностью отличается.

Формула расстояния:

double distance = Math.Sqrt((centerPoint.X + result.X)^2 + (centerPoint.Y + result.Y)^2);
6
ответ дан John Rasch 27 November 2019 в 01:53
поделиться

Без большей информации о точных ошибках трудно сказать что случилось. Уравнения выглядят правильными и должны работать. Вы уверены углы, в которых Вы являетесь передающими, корректны для углов> 90 градусов? Единственная другая вещь, о которой я мог думать, будет состоять в том, что Вы умножаете расстояние (интервал) результатом Math.sin (дважды), но это не должно действительно быть проблемой.

1
ответ дан JonBWalsh 27 November 2019 в 01:53
поделиться

Я не знаю c#, так или иначе при попытке потянуть точки где-нибудь, необходимо рассмотреть то, что складка оси Y от вершины до нижней части экрана, таким образом, элемент греха должен иметь быть - sin(...), и не +sin (...)

так

result.Y = centerPoint.Y + (int)Math.Round( distance * Math.Sin( angle ) );

должен стать:

result.Y = centerPoint.Y - (int)Math.Round( distance * Math.Sin( angle ) );

Если Вы не пытаетесь потянуть их, я не мог бы вообразить, какова проблема, можно ли дать некоторый пример?

0
ответ дан Andrea Ambu 27 November 2019 в 01:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: