Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 16

Тема: Дискретная математика

  1. #1
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,800
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    86 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Дискретная математика

    Компьютерная графика – дело непростое. А уж векторная – вообще жесть. Тут математику и всякие вычисления знать надо ой как! Но мы ведь ничерта не знаем, мы начинающие, поэтому давайте разбиратся вместе. Самое злое в этом деле – то что экран компа состоит из пикселей, и даже если их очень много (высокое разрешение) – всё равно число их конечно. Это означает что ни идеальной линии, ни идеальной окружности нарисовать не получится. А это в свою очередь означает что все формулы которым нас учили в школе почти неприемлемы. Нет, они конечно работают, но блин чуток по-другому, и вот это «другое» создаёт кучу головной боли. А если учесть что комп по своей конструкции вообще умеет только складывать бит к биту (всё остальное – это разнообразные извраты со сложением, где-то на аппаратном уровне, а где-то и программно) – то становится ясно что надо готовится к разным сюрпризам (иначе шансов написать что-либо сложней тетриса почти нет).
    Начнём с теории:
    1. Боянистое доказательство что Pi = 4. (взято из http://gadaika.ru/geometry/chislo-pi-ravno-4)
    Начертим окружность с диаметром, равным единице:

    Теперь опишем квадрат вокруг этой окружности. Периметр этого квадрата будет равен четырём, ведь каждая сторона равна единице.

    Теперь "отрежем" углы у квадрата, чтобы получившаяся фигура более точно повторяла окружность. Отрезать будем прямоугольные кусочки, поэтому периметр фигуры, которая раньше была квадратом, не изменится.

    Повторяем "отрезание", чтобы оставшаяся от квадрата часть была похожа на круг. Кое-где можно не отрезать, а наоборот, "добавлять" прямоугольные кусочки, чтобы максимально приблизить фигуру к окружности. Периметр при этом, опять же, не меняется.

    Проделав это бесконечное число раз (с каждым разом фигура приближается к окружности), получим точный контур окружности. А ведь фигура, которую мы "превратили" в круг, имеет всё тот же периметр, равный четырём! Этот периметр теперь - длина окружности, получившейся из квадрата. Диаметр этой окружности равен единице. Найдём теперь число Пи из определения: Pi = 4 / D = 4.

    Итак, доказано: число Пи равно четырём.

    Не знаю кто как, а я сперва удивился – как так?
    Но довольно быстро стало понятно – что даже если разбивать квадрат бесконечное количество раз, он всё равно будет многоугольником с бесконечным количеством ПРЯМОУГОЛЬНЫХ граней. Т.е. состоять из малюсеньких таких квадратиков. Но тем не менее не кругом! И вот эти уголки от квадратиков будут «набирать» лишнее значение. И станет PI для такой фигуры = 4. А вот если разбивать не на прямоугольники а на треугольники (т.е. «срезая» ещё и диагонали) – то периметр приблизится к настоящему значению PI (хотя и не до конца).
    Пока всё понятно?
    Погнали далее:

    2. Формула Пифагора:
    Та самая для прямоугольного треугольника:

    На бумаге или например на земле это всё правильно.
    Но если изобразить такой треугольник на экране, особенно в маленьком масштабе – то начинается чертовщина. Вот небольшой равносторонний треугольник с катетами 5х5:

    Во первых нет чёткого разделения где кончается один катет и начинается другой (или гипотенуза)
    Всё как-бы «перетекает» одно в другое, но это ещё полбеды. Посчитаем длину гипотенузы. По Пифагору она равна SQR(5*5 + 5*5) – примерно 7 с копейками. А если вручную? 5 пикселей!
    И это тоже ещё не предел шизе!
    Посчитаем квадраты:

    Для катетов – всё правильно – по 25 пикселей на рыло. А гипотенуза? 41 пиксель вручную и 50 по Пифагору.
    Весь этот бред опять-же из-за тех заплётов из-за которых в первом пункте PI равнялось 4.
    Как с этим боротся? Как вычислять всякие пути-длины правильно?
    Да очень просто, повышать точность. Т.е. считать не просто байтами (8бит), а словами (16бит), или даже удвоеными словами (32бита). Но для Спека это гроб. Если для какого-нибудь построения графика – ещё куда ни шло, то для динамичных сцен – совсем не подходяще.
    Ладно. Допустим мы вычислим таблички всякие заранее, где-то округлим, что-то отбросим и даже не будем обращать внимание на биения (дёрганье линий из-за округлений).
    Вернёмся к теории, бог с ними (пока) с битами, худо-бедно умеем их складывать и даже выражать дробную часть.

    3. Ещё бредовей.
    Классическая формула длины окружности:
    L=Pi*D
    Где L – длина, D – диаметр, ну и Pi. (длина окружности равна произведению диаметра на Pi)
    Вроде всё просто.
    Ан нет. Это самое пи есть иррациональное число, т.е. его хрен выразишь конечным числом знаков после запятой. Казалось-бы плюнуть и растереть! Но вылезает интересная тема: если число пи имеет бесконечное количество знаков после запятой, то как тогда длина (которая есть произведение этого пи на диаметр) может быть целым? Ну ладно, если диаметр целое число, то длина – с «дофигазнаковпослезапятой » (т.е. тоже иррациональное число) получается. Хорошо. А если взять прямую единичной длины? И свернуть её в окружность? Длина получается целым (та самая единичка), а диаметр получившейся окружности – нецелым. Выходит что иррациональное число может быть будучи помноженым на что-то там нецелое даст на выходе целое? Но это вроде противоречит самой природе иррациональных чисел!
    В общем у меня ум за разум заходит от размышлений над этими вещами!
    Пробовал «учить матан» - но всё что нагуглил оказалось написано так невразумительно что я ничерта и не понял. То-ли от природы дурак, то-ли доходчиво объясняющего препода не встретил – загадка сие есть…

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

    (P.S. На всяк случай док со статьей во вложении)
    Вложения Вложения
    Последний раз редактировалось Destr; 17.01.2015 в 11:39.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    364
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    почитайте "Мир математики. Deagostini" том 4
    http://natafriends.org/252-zhuan-gom...geometrii.html
    Последний раз редактировалось Kakos_nonos; 17.01.2015 в 12:51.

  4. #3
    Guru Аватар для SoftLight
    Регистрация
    28.02.2005
    Адрес
    Москва
    Сообщений
    2,081
    Спасибо Благодарностей отдано 
    732
    Спасибо Благодарностей получено 
    450
    Поблагодарили
    249 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А дену похоже по сути нечего ответить... Короче я так скажу- геометрию никто не отменял я только не понимаю ты почему когда у тругольника считаешь катеты вычисляешь их в пикселах а когда гипотенузу считаешь в штуках? Ты ее тоже в пикселах тогда считай иу тебя будет неровное число как и по пифагору просто пикселы у тебя квадратные и их собственная гипотенуза собственно больше катета вот и выходит в штуках 5 а не 7. А по катетам как если пиксел развернуть на 45 градусов бутет именно 7. Еслибы пикселы были круглыми проблем бы не было.
    Последний раз редактировалось SoftLight; 17.01.2015 в 12:30.

  5. #4
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,800
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    86 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SoftLight Посмотреть сообщение
    Ты ее тоже в пикселах тогда считай иу тебя будет неровное число как и по пифагору просто пикселы у тебя квадратные и их собственная гипотенуза собственно больше катета вот и выходит в штуках 5 а не 7. А по катетам как если пиксел развернуть на 45 градусов бутет именно 7. Еслибы пикселы были круглыми проблем бы не было.
    Да, я это понимаю.
    Всё написаное демонстрирует именно то что пиксели могут "надуть".
    Например пересечение линий может "промахнутся" если они "между" пикселей друг у друга проскочат.
    Типа такого:
    Вот и получается что имея дело с растром нужно учитывать и все эти финты.
    Последний раз редактировалось Destr; 17.01.2015 в 12:36.

  6. #5
    Veteran Аватар для perestoronin
    Регистрация
    25.11.2011
    Адрес
    г. Красногорск
    Сообщений
    1,389
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Последний раз редактировалось perestoronin; 17.01.2015 в 12:39.

  7. #6
    Veteran Аватар для Kakos_nonos
    Регистрация
    26.12.2010
    Адрес
    Кубань
    Сообщений
    1,152
    Спасибо Благодарностей отдано 
    31
    Спасибо Благодарностей получено 
    37
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Просьба не холиварить. Человек просит чтобы ему помогли разобраться а не чтобы его троллили.

  8. #7
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Kakos_nonos Посмотреть сообщение
    Человек просит чтобы ему помогли разобраться а не чтобы его троллили.
    имхо ни к чему изобретать велосипед и засирать моск чушью.

  9. #8
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,054
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    217
    Поблагодарили
    91 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    1. неправильное толкование интеграла. квадраты остаются "лесенкой", поэтому к окружности никогда не приблизятся настолько, что можно их уравнять. правильное приближение к окружности осуществляется треугольниками-секторами.
    2. расстояние между центрами пикселей по диагонали и по вертикали/горизонтали разное - SQR(2) и 1, поэтому считать, что гипотенуза - тоже 5 пикселей ошибочно.
    3. диаметр тоже получается иррациональным. так что никакого противоречия. представить пи как n/m, где n и m целые, по прежнему нельзя.

    вообще, дискретизировать непрерывное пространство и ожидать, что сохранятся все законы и правила - как-то наивно.
    Все любят гипножабу

  10. #9
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,800
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    86 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SAM style Посмотреть сообщение
    вообще, дискретизировать непрерывное пространство и ожидать, что сохранятся все законы и правила - как-то наивно.
    Ну да, потому и написал что "они конечно работают, но блин чуток по-другому".

    Вот только как это учитывать - не совсем понятно.
    Точней - как это учитывать в реалиях спека и без головоломных формул.
    Т.е. чтоб быстродействие было приемлемым.

  11. #10
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,041
    Спасибо Благодарностей отдано 
    931
    Спасибо Благодарностей получено 
    224
    Поблагодарили
    121 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Destr, Всё что ты написал - правильно. Мир пикселей и целых чисел, он такой. Можно повысить точность увеличением числа разрядов, можно исхитрится и считать по другому пути, можно просто терпеть.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •