Графика в VB

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
iwand
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 23.11.2004 (Вт) 12:51

Графика в VB

Сообщение iwand » 23.11.2004 (Вт) 13:01

Всем привет. Народ, никто не знает, как можно нарисовать дугу методом Pset между двумя точками, если есть координаты этих точек и радиус окружности? Пробовал рисовать при помощи Circle, но там какой-то косяк с углами, которые надо задавать, когда рисуешь этим методом...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.11.2004 (Вт) 13:35

Уравнение окружности: R^2 = X^2 + Y^2. Отсюда и рисуй, только вначале вырази уравнение в канонической форме; Y(X) = +/- Sqr(R^2 - X^2)
Lasciate ogni speranza, voi ch'entrate.

iwand
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 23.11.2004 (Вт) 12:51

Сообщение iwand » 24.11.2004 (Ср) 10:21

Я знаю уравнение окружности, но каким образом его привязать? Я не знаю, как цикл задать... :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.11.2004 (Ср) 10:23

x - это косинус, а y - синус :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.11.2004 (Ср) 11:22

Точно :)
Уже и забыл, так даже проще.
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.11.2004 (Ср) 16:16

GSerg писал(а):x - это косинус, а y - синус :)

...того самого "косячного" угла, что нужно задавать Circle.
Так какая iwand-у разница, рисовать дугу циклом от одного "косячного" угла до другого, или просто передать эти углы в Circle?
Изображение

iwand
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 23.11.2004 (Вт) 12:51

Сообщение iwand » 24.11.2004 (Ср) 16:19

Хорошо, если x - это косинус, а y - синус, то тогда получается x2+y2=1, не так ли? При чем тогда здесь уравнение окружности...
мне реально надо нарисовать эту чертову дугу, а никто толком объяснить не может... Я не продвинутый программист, мне надо с нуля объяснять.... :)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.11.2004 (Ср) 16:22

Да нет там никаких косяков с углами.
Надо просто помнить, что углы задаются в радианах, нулевой угол это горизонтальная линия направо, а направление берется против часовой стрелки. Ну и еще, если разрешение экрана не соответствует пропорциям 4:3, то надо вводить поправочный коэффициент (Aspect Ratio).
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.11.2004 (Ср) 16:24

iwand, забей на синусы и на косинусы.
Углы, передаваемые в Circle, меряются в единицах по 57,3 градуса, начиная от горизонтальной оси, вверх.
Если ты с ними не разберёшься, то тебе и синусы с косинусами не помогут; а если разберёшься, то один вызов Circle решит все твои проблемы.

[edit]ну ладно хоть не GSerg опередил...[/edit]
Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.11.2004 (Ср) 16:26

Если ты решил пользоваться тригонометрическими функциями, то все очень просто.
Формулу помнишь? sin2(x)+cos2(x)=1? Вот отсюда и пляши. Т.е. для любого угла по x откладываешь косинус этого угла, а для y откладываешь синус этого угла, на пересечении ставишь точку. Эта точка будет принадлежать дуге. Повторяешь эту операцию циклом для углов от a1 до a2 (с маленьким шагом) и получишь дугу.
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.11.2004 (Ср) 16:33

alibek, да зачем всё-таки iwand-у синусы, косинусы и циклы? Чем Circle хуже?
Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.11.2004 (Ср) 16:37

tyomitch, а может быть он пишет свою процедуру рисования окружности, которая на порядок быстрее обычной :)
Зачем - сам не знаю. Но он спрашивал, как нарисовать дугу при помощи PSet.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 13

    TopList