Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2009, 21:13   #1
Nextgen
 
Регистрация: 20.12.2009
Сообщений: 7
По умолчанию Рисование n-угольной правильной звезды

Доброго времени суток! Значит к чему я пришел:
нужно получить n-угольник. На рисунке в виде примера дана звезда.
Заданы внешний и внутренний радиусы, имеется центр многоугольника, соответственно сами задаем количество вершин. Вот что вышло:
В событии FormPaint я вписал вот что
Код:
 R=30;//внешний радиус
r=10;//внутренний радиус
  int x=150, y=150;  //координаты центра
  const float pi=3.1415926;
  Canvas->MoveTo(x + R, y);//перемещаем указатель на 1-ю вершину

 for(int i=1; i<=n; i++){
Canvas->LineTo(x + cos(i*pi*2/n) * R, y + sin(i*pi*2/n) * R);
}
Но не выходит как на изображении, нет острых углов, ну я и не ставил внутренний радиус, т.к. уже там перепробовал много всего и вписал то что работает. Вот я не могу придумать такую формулу что бы использовался еще и внутренний радиус, и как их объеденить в одну формулу.

Надейюсь на вашу помощь!
Изображения
Тип файла: png рис.png (939 байт, 291 просмотров)
Nextgen вне форума Ответить с цитированием
Старый 20.12.2009, 22:17   #2
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
нужно получить n-угольник.
Ну у вас и получился n-угольник... А то что на картинке сильно смахивает на n-конечную звезду...

Уточните задание... =\\
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 20.12.2009, 23:13   #3
Nextgen
 
Регистрация: 20.12.2009
Сообщений: 7
По умолчанию

А ну да оговарился. Должна быть n-угольная звезда
Nextgen вне форума Ответить с цитированием
Старый 20.12.2009, 23:37   #4
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Лампочка

Переделал из Делфи под билдер... Работает?
Код:
R=30;
r=10;
int x=150, y=150;
const float pi=3.1415926;
Canvas->MoveTo(x+R, y);
int i=1;
while (i<=n*2)
{
      Canvas->LineTo(x+cos(i*pi/n)*r, y+sin(i*pi/n)*r);
      i=i+1;
      Canvas.LineTo(x+cos(i*pi/n)*R, y+sin(i*pi/n)*R);
      i=i+1;
}
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 21.12.2009, 13:55   #5
Nextgen
 
Регистрация: 20.12.2009
Сообщений: 7
По умолчанию

Спасибо! Прекрасно работает, щас буду разбирать формулу))
Nextgen вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смотрим на звезды ! Levsha100 Свободное общение 9 13.08.2009 03:05
Является ли заданная строка правильной записью вещественного числа с возможным знаком и десятичной точкой Banny Паскаль, Turbo Pascal, PascalABC.NET 7 18.12.2008 22:28
Проверка – является ли раскладка клавиатуры правильной для вводимого текста Xandr Общие вопросы Delphi 7 02.11.2007 09:25
Определить, является ли заданная строка правильной записью вещественного числа Sergik1977 Паскаль, Turbo Pascal, PascalABC.NET 2 18.10.2007 16:53