Вход | Регистрация

Трета задача

  • @Атанас

    Ако __eq__ ти работи правилно за Point(2, 4, 2)) и Point(1, 2, 1), не би следвало да имаш проблем

    ПП: изпревариха ме и поста е излишен ... ама съм тъп и не виждам бутончето за изтриване ?

    21.04.2010 (променeно 21.04.2010)
  • мерси не се бях замислял

    21.04.2010
  • @Любомир:

    Имам малък проблем със публикуването на решението си. [...]

    Повече не би трябвало да имаш проблеми.

    @Иван:

    Има ли смисъл от scaled ?

    Може би няма смисъл да го има в условието, но със сигурност има смисъл да напишете такъв метод. Замисли се над това:

    1. Той е частен случай на умножение
    2. Той може да е частен случай и на някои други функции
    21.04.2010 (променeно 21.04.2010)
  • @Антон Дончевски

    Модифициран тест на Димитър Петков, така че да е по-независим от имплементацията

    Да, мерси :) изпревари ме :) ... Може също да се махне и ред 324:

    self.assertFalse( l2.isparallel( Line( Point( 1,1,0 ), Point( 1,0,0 ) ) ) )

    защото е спорно дали безкрайната права е успоредна на всяка друга... на мен ми харесва да е - щото се пресича с всяка друга в безкрайна точка, но има и други мнения и, както разбирам, няма да го има в тестовете това.

    @Йоан Карадимов

    Той може да е частен случай и на някои други функции

    Аз даже май се досещам кои .... :P

    22.04.2010 (променeно 22.04.2010)
  • Искам да попитам долното твърдение ще е вярно ли за всички P и Q(без 0) реални числа,тъй като винаги съществува k такова,че P = kQ? self.assertEqual(Point(0,P,0), Point(0,Q,0))

    22.04.2010
  • @Николай Константинов

    Вярно е.

    22.04.2010
  • "Конструкор Line(a, b), приемащ 2 точки или вектор и точка."

    Това 'или' нали е изключващо :) ?

    22.04.2010
  • Не е изключващо. Трябва да можеш да строиш права и по двата начина.

    22.04.2010
  • Само кратка бележка, че няма да удължаваме срока за задачата. Не е сложна, имахте време, Стефан в понеделник реши почти половината.

    22.04.2010
  • "# Оператор v in l, който за точка v  и права l  връща True, само ако точката лежи на правата."

    С какво можем да предефинираме in оператора? Защото вероятно аз бъркам нещо, но __in__() изобщо не я лови и си мрънка: TypeError: argument of type 'Line' is not iterable

    22.04.2010
  • Thumbs_up

    __contains__(seq, obj)

    Ето това ти е за 'in' оператора.

    Тук пише повече - http://docs.python.org/...perator.html

    22.04.2010 (променeно 22.04.2010)
  • @Кирил

    # __contains__(self, item) за item in обект

    22.04.2010
  • Как по-точно би трябвало да изглеждат коефициентите на общото уравнение на една права, минаваща през крайна и безкрайна точка?

    22.04.2010 (променeно 22.04.2010)
  • @Габриела

    Пример:

    Line(Point(1.0, 2.0, 0.0), Point(4.0, 4.0, 4.0))

    (8.0, -4.0, -4.0)

    22.04.2010 (променeно 22.04.2010)
  • @Антон: Благодаря, но дали ще е възможно да кажеш по каква формула се пресмятат?

    22.04.2010
  • Line(Point(1, 2, 0), Point(4, 4, 4))

    съвпада със

    Line(Vector(1, 2), Point(4, 4, 4))

    има и други начини, например с пресмятане на детерминанта

    22.04.2010 (променeно 22.04.2010)
  • @Габриела

    http://mathworld.wolfram.com/CrossProduct.html

    22.04.2010 (променeно 22.04.2010)
  • Ето мойте тестове, които се надявам да са от ползва на някого. Махнете първия клас, защото тества функция в модула.

    http://gist.github.com/375054

    22.04.2010
  • При метода normalized например следния тест дава грешка свързана със закръгляването.

    self.asserEquals(Vector(0.6,0.8),Vector(3,4).normalize())

    Въпросът ми е ще се използват ли такъв тип тестове или ще се сравнява например дължината с assertAlmostEquals. unittest-а не би трябвало да има идея какво означава два вектора да са почти равни. Има ли начин това да се дефинира? Може например в метода __eq__ да се укаже че два вектора са равни ако координатите са им почти равни, но няма ли по-добър начин?

    22.04.2010
  • Благодаря ви

    22.04.2010 (променeно 22.04.2010)
  • @Никола Петров

    GeometricError не GeometryError

    test_construction(self) e невалиден тест предвид "(забележка: дължината и направлението на върнатите вектори са без значение)"

    Всякакви подобни сравнения като : self.assertEquals("Line(Point(0.0, 0.0, 1), Vector(-1.0, -1.0))", repr(l)) са невалидни.

    Теста който си дал е зависим от реализацията, а не трябва да е така.

    22.04.2010 (променeно 22.04.2010)
  • •Метод l.isinfinite(), връщащ True, ако правата съвпада с безкрайната права

    някой може ли да поясни кога това условие е изпълнено?

    22.04.2010
  • @Иван Петров

    Когато правата е от вида 0,0,z ,където z != 0

    22.04.2010
  • @Антон

    Мерси много за забележките и поправката на класа. Щеше да ми коства сигурно няколко усмивки :)

    22.04.2010
  • Здрасти

    Имам си нулев вектор и му викам .normal() и не е дефинирано какво да правя

    Йоан на предните страници писа, да хвърляме грешка при .normalized()

    При .normal() обаче мога да избирам дали също да хвърлям изключение или да върна пак Vector(0,0) (има някаква логика - тва е вектор дето е перпендикулярен и колинеарен на всички други вектори)

    Изключението е правилния (единствения) избор според мене, ама вие съгласни ли сте или ще тествате по друг начин :) ?

    22.04.2010