Рейтрейсинг

Тема в разделе "WASM.GRAPHICS", создана пользователем tylerdurden, 10 май 2005.

  1. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Есть заданная кривая, меня интересует именно вид ее графика в полярных координатах, возможно ли "отрейтрейсить" плоскость ограниченнную этой кривой ?



    П.С. Подскажите заодно, что можно почитать по рейтрейсингу норм. ? А то "читаю читаю, слова понятные..." и пр. :dntknw:
     
  2. _hidden_

    _hidden_ New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    30
    Адрес:
    Russia
    по порядку ;)



    возможно, только если кривая лежит в нужной тебе плоскости ;)



    enlight.ru - там ссылки на dd3d и ddfaq



    для начала - самое то!
     
  3. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    ? ;) в смысле "в нужной мне" ? Мне надо то что внутри нее :)



    П.С. enlight читал, не особо доходчво :)
     
  4. jekyll

    jekyll New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2003
    Сообщения:
    92
    Адрес:
    Russia
    А поконкретнее можно.

    Например есть кривая, описываемая формулой X^2+Y^2=R^2.

    Берем плоскость, строим график кривой и видим, что данная кривая делит плоскость на 2 части.

    Вопрос №1. Какая из этих плоскостей тебе нужна?

    Если внутренняя, то тебе оттрейсить надо те точки с координатами X и Y, сумма квадратов которых будет меньше или равана R^2.



    А по рейтрейсингу (точнее рейкастингу) были статьи в hugi. В номере по кодингу они вроде тоже есть.
     
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    tylerdurden



    Есть заданная кривая, меня интересует именно вид ее графика в полярных координатах.



    Полярный медьведь это прямоугольный медведь после преобразования координат :)



    Кривая в полярных координатах:



    r = r(fi);



    Она же в декартовых:



    x = r * cos(fi) = r(fi) * cos(fi)

    y = r * sin(fi) = r(fi) * sin(fi)



    Кривая может быть замкнутой, а может и не быть. Если кривая задана неявно, т.е. условие принадлежности точки кривой - F(r, fi) = 0, то тут будет сложновато. Если явно, т.е. r = r(fi), то тут попроще. Если известно аналитическое представление кривой, то вроде бы должно быть еще проще.



    Задачу можно попробовать решить так: проверяемая точка находится внутри плоскости, ограниченой кривой, если она (проверяемая точка) "слева" ("справа") от ближайшей точки на этой кривой.



    Условие "слева" ("справа") можно получить так:



    r = r(fi) - кривая.

    p - проверяемая точка.

    near - ближайшая точка на прямой к проверяемой.

    тогда:



    "слева", если cross((p - near), dr/dfi(near)) > 0, и

    "справа", если cross((p - near), dr/dfi(near)) < 0



    Самое неприятное - определение этой самой ближайшей точки. Численно в общем виде без прямого перебора эта задача не решается :)