Расчет чередующихся точек по кругу - PullRequest
0 голосов
/ 27 апреля 2020

Я мог бы использовать некоторую помощь в создании некоторых точек для нарезанного круга, у меня полный мозговой перфокарт, и я просто не могу понять это.

Я хочу создать круг "поля зрения" для игра ai и хотела бы создать точки в чередующемся порядке, охватывающем примерно область Pi * 1.75.

crudely drawn illustration

1 Ответ

0 голосов
/ 27 апреля 2020

Чтобы сделать альтернативные лучи, вы можете использовать четность счетчика. Псевдокод

n = 11
for (i = 1; i <= n; i++) {
int j = i / 2
float angle = - j * Pi * 7 / 4 / n
if (i & 1) 
  angle = - angle
line end:
  X = CX + R * Cos(angle - Pi/2))
  Y = CY + R * Sin(angle - Pi/2))

рабочий Delphi код для демонстрации:

enter image description here

var
  n, i, X, Y: Integer;
  a: Double;
begin
  n := 11;
  for i := 1 to n do begin
    Canvas.MoveTo(200, 200);
    a := (i div 2)* Pi * 7 / 4 / n;
    if (i and 1 = 0) then
      a := - a;
    X := 200 + Round(100 * Cos(a - Pi/2));
    Y := 200 + Round(100 * Sin(a - Pi/2));
    Canvas.LineTo(X, Y);
    Canvas.TextOut(X, Y, i.ToString);
  end;
...