Проект 2 [программирование]
|
|
ldo2 | Дата: Вторник, 29.01.2008, 22:56 | Сообщение # 26 |
 Сержант
Группа: 11
Сообщений: 88
Статус: Offline
| Ванька, в эталонном проекте точки ВО сохраняются в массиве @points для полигона (@p, @q - для отрезка;@p - для точки), в классе Polygon по ним можно пробежаться например так ps вне класса можно пробежаться так (f - экземпляр класса Polygon): только это будет Exitus letalisДобавлено (06.12.2007, 19:54) --------------------------------------------- в первом случае надо еще рассмартивать @points[i+1]
Основная проблема современности - коммуникационная. jabber: ldo2@jabber.ru skype: ldo1
|
|
| |
kpp2 | Дата: Вторник, 29.01.2008, 22:56 | Сообщение # 27 |
Сержант
Группа: 11
Сообщений: 59
Статус: Offline
| Готово, в полном фарше и с подсветкой рёбер. надеюсь такая хр*нь прокатит: def Polygon.add_triangle @@triangle=Void.new while @@triangle.class != Polygon @@triangle=@@triangle.add(R2Point.new) TkDrawer.clean; @@triangle.draw end end def Polygon.draw_triangle(color) @@triangle.draw(color) end
|
|
| |
Evkingen | Дата: Вторник, 29.01.2008, 22:56 | Сообщение # 28 |
 Рядовой
Группа: 11
Сообщений: 46
Статус: Offline
| у меня вопрос как ребра подстветить?) и потом....не легче ли подсветить сам овал другим цветом??? функция будет не одна и та же ? 
|
|
| |
kpp2 | Дата: Вторник, 29.01.2008, 22:57 | Сообщение # 29 |
Сержант
Группа: 11
Сообщений: 59
Статус: Offline
| Evkingen, овал одним цветом, рёбра другим + те рёбра, которые считаешь третьим.
|
|
| |
sma39 | Дата: Вторник, 29.01.2008, 22:57 | Сообщение # 30 |
 Лейтенант
Группа: 61
Сообщений: 114
Статус: Offline
| Люди, у меня задача 2.12а. Нужно определить, находится ли единичная окружность в центре с началом координат внутри выпуклай оболочки. Каким образом это можно определить? Мысли конечно есть. Чтобы она там находилось, оболочка должна пересекать все оси координат, в точках, по модулю >1. Но если прямая пересекает ось ох в -1.01 и ось оу в-1.01, то прямая пересекает окружность, т.е окружность не лежит внутри оболочки. А если точка пересечения с оу -1.01, а пересечение с ох в точке -250, то прямая не пересекает окружность, и окружность лежит внутри оболочки. Как это можно перебрать для всех случаев я не представляю. Есть какая-нибудь формула, которая определяет, есть ли у окружности и прямой точки пересечения? Т.е мне нужно проверить всего 2 случая: имеется ли пересечение со всеми осями и имеется ли пересечение с окружностью. У кого какие мысли по этому поводу?
|
|
| |
Xaron1 | Дата: Вторник, 29.01.2008, 22:57 | Сообщение # 31 |
Группа: Удаленные
| У меня есть две мысли. 1) Формула точек пересечения прямой и окружности элементарно выводится из системы двух уравнений: прямой и окружности. 2) А не проще ли при возникновении и исчезновении новых ребер проверять их расстояние до точки (0;0), сравнивая с единицей? P.S. Ну и не забываем про стационарные значения. Если окружность лежит внутри выпуклой оболочки, сколько точек не добавляй, она уже оттуда не выскочит.
|
|
| |
kmeaw | Дата: Вторник, 29.01.2008, 22:57 | Сообщение # 32 |
 Рядовой
Группа: Проверенные
Сообщений: 35
Статус: Offline
| sma39, читай MathWorld, он рулит: http://mathworld.wolfram.com/Circle-LineIntersection.html
-- kmeaw aka bdd1
|
|
| |
sma39 | Дата: Вторник, 29.01.2008, 22:57 | Сообщение # 33 |
 Лейтенант
Группа: 61
Сообщений: 114
Статус: Offline
| Спасибо, почитаю. А у кого-нибудь есть библиотека tk? А то я запускаю, вылазит ошибка, что не найден tk84.dll, а постоянно лазить на виртуал машину уже надоело, тем более там ни скайта, ни еклипса нет. Один этот баранистый емакс. Добавлено (09.12.2007, 16:22) --------------------------------------------- И еще вопрос. Я с кругом никак разобраться не могу. Куда чего надо написать, чтобы при запуске программы появлялся круг, радиусом 1 с центом в 0,0?
|
|
| |
y0ma | Дата: Вторник, 29.01.2008, 22:57 | Сообщение # 34 |
 Рядовой
Группа: 11
Сообщений: 14
Статус: Offline
| @points - это массив экземпляров класса R2Point. Причем точки записаны в определенной последовательности.
Я в контакте, skype: y0ma97
|
|
| |
Evkingen | Дата: Вторник, 29.01.2008, 22:58 | Сообщение # 35 |
 Рядовой
Группа: 11
Сообщений: 46
Статус: Offline
| как покрасить в красный цвет фрагмент ребра лежащий внутри эллипса? точки пересечения с ребром знаю... метод intersection который у меня выводит кол-во точек пересечения лежит в class figure )))
|
|
| |
ldo2 | Дата: Вторник, 29.01.2008, 22:58 | Сообщение # 36 |
 Сержант
Группа: 11
Сообщений: 88
Статус: Offline
| Evkingen, можно так: TkDrawer: Code def TkDrawer.drawLine(p,q, col = "black") TkcLine.new(CANVAS, x(p), y(p), x(q), y(q)) {fill(col)} end рисовать фрагмент ребра, как отрезок, a,b -концы отрезка(экземпляры R2Point): Code TkDrawer.drawLine(a,b, "red")
Основная проблема современности - коммуникационная. jabber: ldo2@jabber.ru skype: ldo1
|
|
| |
Evkingen | Дата: Вторник, 29.01.2008, 22:58 | Сообщение # 37 |
 Рядовой
Группа: 11
Сообщений: 46
Статус: Offline
| module TkDrawer def TkDrawer.oval(p,a,b,color) TkcOval.new(CANVAS, TkDrawer.x(p)+TkDrawer.c(a),TkDrawer.y(p)+TkDrawer.c(b),TkDrawer.x(p)-TkDrawer.c(a),TkDrawer.y(p)-TkDrawer.c(b)){fill(color)} end end н апишешь в Convex в тк драймвер def TkDrawer.с(a) SCALE*a end в runtkconvex while true fig = fig.add(R2Point.new) ........................................................................... TkDrawer.clean; fig.draw; TkDrawer.oval(p,a,b,"") end Добавлено (10.12.2007, 22:10) --------------------------------------------- тебе нужна окружность с радиусом 1 вместо a,b пиши 1
|
|
| |
Ванька | Дата: Вторник, 29.01.2008, 22:58 | Сообщение # 38 |
 Рядовой
Группа: 11
Сообщений: 16
Статус: Offline
| sma39, TkDrawer.drawCircle<<<<<<это в Runtkconvex.rb def TkDrawer.drawCircle(p = R2Point.new(0, 0)) TkcOval.new(CANVAS, x(p) + SCALE, y(p) + SCALE, x(p) - SCALE, y(p) - SCALE) {} end<<<<<<<< это в TkDrawer.rb
Я vkontakte
|
|
| |
sma39 | Дата: Вторник, 29.01.2008, 22:58 | Сообщение # 39 |
 Лейтенант
Группа: 61
Сообщений: 114
Статус: Offline
| Люди. Нужна помощь. Все дописал, все работает идеально (вроде). Не могу разобраться как делать тесты. Вот тут http://msiu-prog.ifolder.ru/4576002 выложил весь свой проэкт. Кому не лень гляньте, плз и напишите один тест. Ну, например должны последовательно вводится точки и выводится такие ответы вводим -5, -3 вводим 5, -3 выводим false вводим 0, 5 выводим true После ввода первой координаты ничего выводится не должно, после ввода последующих выводится false или true (true, если единичная окружность с центром 0,0 лежит в выпуклой оболочке и false, если нет). Выручайте. Добавлено (15.12.2007, 22:26) --------------------------------------------- В самом-то проекте у меня все вводится и выводится как надо, нужно лишь чтобы тесты тоже говорили, что все ОК.
|
|
| |
ldo2 | Дата: Вторник, 29.01.2008, 22:58 | Сообщение # 40 |
 Сержант
Группа: 11
Сообщений: 88
Статус: Offline
| можно поизвращаться с IO.popen("ruby RunConvex.rb", "r+") примеры использование можно найти у Рогановой тестирование последовательностей Токо нужно учитывать, что в винде перевод строки осущ. двумя символами \r\n
Основная проблема современности - коммуникационная. jabber: ldo2@jabber.ru skype: ldo1
|
|
| |