|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.08.2008, 11:19 | #11 |
Участник клуба
Регистрация: 29.01.2008
Сообщений: 1,039
|
Canvas.Ellipse(0, 0, 100, 100);
|
18.08.2008, 11:24 | #12 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
Я участвовал на олимпиаде и мне попалась задача. Написать программу которая рисует окружность обвитую синусоидой, я не справился с этой задачей, но зато потом нашел решение.
Насчет окружности. sin a=y cos a=x a-это угол от 0 до pi*2 Но если вы построите окружность таким образом, то она будет в 1 пиксел радиусом. Для того чтобы увеличить радиус нужно sin a и cos a умножить на радиус. Тут появляется еще одна проблема, сколько нужно прибавлять к углу, чтобы все было тип топ, а нужно прибавлять 1/r. Немного про pi. Pi измеряется в радианах, и число pi=~3,14 это пол окружности, значит pi=180 градусов, а 2pi=360 градусов. Последний раз редактировалось Kostia; 18.08.2008 в 11:27. |
18.08.2008, 11:34 | #13 |
Участник клуба
Регистрация: 29.01.2008
Сообщений: 1,039
|
Блиин, совершенно не понимаю как решить эту задачу. Только с Canvas. Ну вот в принципе решение которое я только смог сделать:
const X = 100; Y = 100; R = 50; Canvas.Ellipse(R,R,R+X,R+Y); |
18.08.2008, 11:37 | #14 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
Код:
Последний раз редактировалось Kostia; 18.08.2008 в 12:11. |
18.08.2008, 11:45 | #15 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
a-это угол, нам нужно перебрать углы всех точек на окружности и посчитать их координаты.
sin a - высчитывает координату по оси y, и значение он возвращает от -1 до 1 cos a - высчитывает координату по оси x, и значение он возвращает от -1 до 1 Мы умножаем значение sin и cos на радиус и прибавляем смещение по y и x соответственно, т.е. двигаем центр окружности в нужную точку. А чтобы при больших радиусах не обидеть не одной точки или на оборот не расчитать одну и туже точку несколько раз, угол нужно увеличивать на 1/r Хоть немного понятней стало? |
18.08.2008, 11:47 | #16 |
Участник клуба
Регистрация: 29.01.2008
Сообщений: 1,039
|
О спасибо, сейчас разбирусь.
|
18.08.2008, 11:54 | #17 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
Есть еще такой график функции sin(x). Это синусоида, т.к. sin возвращает значение от -1 до 1, то если вместо угла указать координату x, то поручится волнистая линия:
Код:
Последний раз редактировалось Kostia; 18.08.2008 в 12:03. |
18.08.2008, 12:07 | #18 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
Можешь попробовать построить волнистую окружность. Попробуй в первом примере радиус расчитывать по синусоиде.
|
18.08.2008, 12:09 | #19 |
Участник клуба
Регистрация: 29.01.2008
Сообщений: 1,039
|
Блиииин. Простите меня за тупость, но я совершенно не пойму, как это всё делать, в код я скопировал, но блин, совершенно не могу додуматься что же делается например вот в этих строчках кода:
Код:
|
18.08.2008, 12:20 | #20 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
Мы собираемся делать игры, а там это просто необходимо. Например поворот изображения, полет пули в направлении пушки, самонаводящиеся ракеты и т.д.
Нужно только понять. И это вовсе не тупость, я понимаю как это тружно, сам оказывался в похожих ситуациях, но учитель попался с хорошими нервами и все мне разживал и я не хочу быть хуже его. И постараюсь разжевать и тебе, главное чтобы у тебя терпения хватила и не убежал бы. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
"Калькулятор в Delphi" в теоретические аспекты??? | jenja | Общие вопросы Delphi | 1 | 25.05.2008 23:23 |
основные цели и задачи студенческого форума? | ALEXBAZ | Свободное общение | 1 | 14.05.2008 22:24 |
комп. для программирования | фамил | Компьютерное железо | 4 | 09.05.2008 12:11 |
Неделя программирования | Stiker | Свободное общение | 2 | 10.02.2008 21:15 |