11 и 61 ГОУ МГИУ Четверг, 24.07.2025, 12:32
Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Архив - только для чтения
Проект 2 [программирование]
ldo2Дата: Вторник, 29.01.2008, 22:56 | Сообщение # 26
Сержант
Группа: 11
Сообщений: 88
Статус: Offline
Ванька,
в эталонном проекте точки ВО сохраняются в массиве @points для полигона (@p, @q - для отрезка;@p - для точки),
в классе Polygon по ним можно пробежаться например так
Code

for i in -1...@points.size -1
#тут что-то делаем с @points[i]
end

ps
вне класса можно пробежаться так (f - экземпляр класса Polygon):

Code

f.get_list_points

только это будет 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
у меня вопрос как ребра подстветить?)

и потом....не легче ли подсветить сам овал другим цветом??? функция будет не одна и та же ? wink


 
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
 
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Copyright MyCorp © 2025