Кефите ме хора, ся ще трябва и математика да уча :D :D Това от учебник по геометрия или по алгебра трябва да е ?
Трета задача
-
19.04.2010
-
@Габриела Цанова
Ясно, мерси много ;]
Ок, ами тогава да попитам дали точката трябва да я представям в хомогенни или в нехомогенни( при z != 0), защото май в нехомогенни ми се улеснява повече живота ;]
19.04.2010 (променeно 19.04.2010) -
@Виктор: Ами по условие пише, че конструкторът взима три параметъра като z е със стойност 1 по подразбиране. Според мен когато ти се наложи да смяташ някви неща с тия точки, трябва да гледаш дали е безкрайна или не, и ако на z е зададена друга стойност, просто да превръщаш координатите в нехомогенни като x' = x/z и y' = y/z (;
@Иван: Това е материал по аналитична геометрия (:
19.04.2010 (променeно 19.04.2010) -
Хора, моля ви. Не съм учил аналитична геометрия. Е ще попълня дупките, само ми дайте някоя малка симпатична статия с основните неща. Няма време да изкарам математиката за 2 дена. Интересува ме какво е РАЗШИРЕНО евклидово пространство най-вечеи защо точките имат три координати. Какво подяволите е безкрайна точка ( айде безкрайна права ще го преглътна... )
19.04.2010 -
Дам и аз така съм направил, мерси Габриелче ;]
@Ванка каквото ти трябва да знаеш за задачата можеш да го намериш чрез google.
19.04.2010 -
Може ли да кажете каква точност се очаква от тестовете, защото стават някои аномалийки при числата с плаваща запетая. Проблема е, че не знам как да тествам за вектор с дължина 1
>>> from geo import Vector >>> x = 1/(2 ** 0.5) >>> v = Vector(x, x) >>> (v.x * v.x + v.y * v.y) == 1 False >>> (v.x * v.x + v.y * v.y) == 1.0 False
19.04.2010 -
@Иван Георгиев: Това може да ти е от полза: http://www.songho.ca/...geneous.html
20.04.2010 (променeно 20.04.2010) -
Как трябва да подхождаме към разстоянията до безкрайните точки? Има ли число "много" в Python?
20.04.2010 -
Йоан, предната страница:
При търсене на разстояние, ако едно от двете е бекзкрайна точка или безкрайната права - хвърляйте GeometricError.
20.04.2010 (променeно 20.04.2010) -
при l.colinear_vector() в клас права вектора, който се връща, е пак от двумерното евклидово пространство, нали?
20.04.2010 -
"Да се имплементира модул за работа с обекти в разширеното двумерно евклидово пространство."
20.04.2010 (променeно 20.04.2010) -
Аз имам един въпрос, отново отнасящ се до точките и по-точно до условието за равенство между тях. Тъй като е казано, че точките (x, y, z) и (cx, cy, cz) са равни за всяка реална константа c, това означава ли, че безкрайната точка (0, 0, 0) е равна на всяка една друга точка, безкрайна или не, чиито координати са умножени с реалния коефициент 0? Струва ми се малко странно, даже нередно, ако е така..
20.04.2010 (променeно 20.04.2010) -
Искам да попитам метода __repr__ за точка какво всъщност трябва да изведе (колко координати)? Например: Point(1,2,1) ще изведе Point(1,2,1) или Point(1,2)
20.04.2010 -
Най-безопасно е да връща Point(1, 2, 1) в случай, че полето z е различно от 1, тогава ще е например Point(1, 2, 0), а ако все пак е единица ще си остане толкова.
Може и да се направи на 2 случая, но ми се струва излишно усложнение. Така или иначе eval ще връща еднакви обекти, който и от 2та конструктора да изпише __repr__.
20.04.2010 -
@Габриела Цанова
Точка с координати (0, 0, 0) няма!
Малко тестове качени тук [http://rapidshare.com/...est1.py.html] - не знам дали е много правилно да ги upload-вам в този сайт, но дори и грозно може да е полезно за някой.
20.04.2010 (променeно 20.04.2010) -
Няколко малки въпросчета: Какво е разстоянието м-у безкрайната точка и обикновената точка? "Перспективата" вкючва ли се в изчислението? Същотото ми е неясно и аз правите. Благодаря предварително
20.04.2010 -
Това с разстоянието м/у безкрайна точка и не знам си още какшо се пита за 10 път и за същата бройка се отговаря :)
20.04.2010 (променeно 20.04.2010) -
@Габриела: http://en.wikipedia.org/..._coordinates
Note that, since ratios are used, multiplying the three homogeneous coordinates by a common, non-zero factor does not change the point represented.
Note that the triple (0, 0, 0) is omitted and does not represent any point.
Аз сега, чета там и очаквам да разбера пресичането на прави дефинирани от точка в Евклидовата равнина и точка в безкрайността.
Примерно се чудя това какво ще ми даде: Line(Point(0,1), Point(4,5,0)) * Line(Point(1,0), Point(1,2,0))
@Иван Янакиев: Мерси много за тестовете.. но се чудя, защо Point(1,2,0) == Point(2,4,0) Сега ще попрочета още...
Edit: Ааа... видях защо са равни. (Така е .. като не чета условието буква по буква)
20.04.2010 (променeно 21.04.2010) -
Въпрос какво да правим с 3 * Vector(1, 2) връща, че във int не е дефинирано умножение на int с Vector да го оставиме така или има и друг изход? Ще помоля да не давате двустранни отговори като пример в условието пише при подаване на вектор(0, 0) за нормализиране да хвърля ГеометричнаГрешка, а след това Йоан мисля отговаря на някой задал въпрос че въпросната функция трябва да връща false. Моля за пояснение по този въпрос.
20.04.2010 -
@Атанас: Ами ние в час дефинирахме __rmul__ в класа Vector за да работи както 3 * Vector(1, 2), така и Vector(1, 2) * 3.
20.04.2010 (променeно 20.04.2010) -
Аз имам въпрос относно финалния тест върху решенията ни. Ще се правят ли проверки тип assertRaises на други класове освен GeometricError (например ZeroDivisionError, AttributeError). Аз лично навсякъде където може да гръмне програмата ми (недефинираните случаи) съм настроил да вика GeometricError, така че ще е добре да знам дали трябва да разкарам тази функционалност.
21.04.2010 -
Още едно въпросче: Вярно ли е ако имаме a = Vector(1, 1) a.normalized().length() да ни връща 0.9999999999999999
21.04.2010 -
Малко тестове (може и да има грешки, разбира се)
http://pastebin.com/aiccUvVV
Освен това, някои тестове имат повече от един правилен отговор, а моите тестове проверяват за точно един от тях.21.04.2010 (променeно 21.04.2010) -
@Петко Василев Мерси за тестовете. Но защо имаш ... Line( нещо, нещо, нещо ).. не се ли искаше Line да взима само 2 неща и те да са Vector + Poin или Point + Point
И другото... изгърмя ми, защото искаше Vector( ... ).normal() да хвърля GeometricError когато векторът е ( 0,0 ). Тъй като
Нулевия вектор е едновременно колинеарен и перпендикулярен на всички
значи е такъв и за ( 0,0 )... и .... абе на кратко мисля, че няма нужда от Exception там ама нека да се изкаже някой по-знаещ.
И още нещо:
Конструкор Line(a, b), приемащ 2 точки или вектор и точка
да го разбираме като ... Line( Vector( v1,v2 ), Point( p1,p2,p3 ) ) или като Line( Point( p1,p2,p3 ), Vector( v1,v2 ) ) Или пък като двете..
21.04.2010 (променeно 21.04.2010) -
Малко тестове и от мен...
Абе като цяло за много Exception-и проверявам в тях... в общи линии винаги като имаме недефинирано поведение (или поне се заблуждавам доста успешно за това винаги)
21.04.2010 (променeно 21.04.2010)