Обратный Vector3 - PullRequest
       2

Обратный Vector3

0 голосов
/ 10 июля 2020

Я пытаюсь преобразовать код C ++ в Java. Поскольку в java нет типа данных Vector3 по умолчанию, я создал свой собственный класс Vector3. Однако я увидел, что это возможно: 1 / VECTOR3 в C ++. Это меня немного смутило, так как Vector3 имеет 3 значения внутри. Поэтому мне было интересно, может ли кто-нибудь объяснить мне, что на самом деле происходит с каждым из трех значений при использовании 1 / VECTOR3?

Код, который я пытаюсь преобразовать, находится здесь, внизу страницы : https://www.scratchapixel.com/lessons/3d-basic-rendering/minimal-ray-tracer-rendering-simple-shapes/ray-box-intersection


class Ray  {  public: 
    Ray(const Vec3f &orig, const Vec3f &dir) : orig(orig), dir(dir) 
    { 
        invdir = 1 / dir; 
        sign[0] = (invdir.x < 0); 
        sign[1] = (invdir.y < 0); 
        sign[2] = (invdir.z < 0); 
    } 
    Vec3 orig, dir;       // ray orig and dir 
    Vec3 invdir; 
    int sign[3];  };

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Во-первых, в C ++ нет Vec3. Если вы внимательно прочитаете эту страницу, то увидите все их типы. Текст немного небрежный. Они называют это «обратным направлению луча», но для вектора я не знаю обычно используемого определения «обратного». В любом случае ...

Вам просто нужно прокрутить страницу до конца, перейти по ссылке к полному примеру, а затем посмотреть на geometry.h. Вот определение этого деления:

friend Vec3 operator / (const T &r, const Vec3 &v) 
{ return Vec3<T>(r / v.x, r / v.y, r / v.z); } 

(T - тип элемента)

Они определяют деление скаляра на вектор как поэлементное деление.

0 голосов
/ 13 июля 2020

Спасибо пользователю: idclev 463035818 . Я обнаружил, что для этот конкретный c paper по существу эта операция была пользовательской операцией, сделанной в c# (потому что, по-видимому, c# просто слишком силен). Когда у вас есть номер, который мы назовем n , разделенный на vector3, который мы назовем VECTOR3 . По сути, каждая эта операция возвращает следующее как vector3 ( n / VECTOR3.x , n / VECTOR3.y , n / VECTOR3.z )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...