RotorReflect - Interactive demo of rotation via double reflection

RotorReflect는 벡터의 회전이 두 번의 반사(reflection)로 어떻게 구현되는지 시각적으로 보여주는 인터랙티브 데모입니다. 사용자는 'rotor'를 드래그하여 반사 벡터의 방향을 조절하며, 회전 각도가 두 반사 벡터 사이 각도의 두 배가 되는 원리를 직관적으로 이해할 수 있습니다. 이 도구는 2D 및 3D 공간에서의 회전을 지원하며, 원형 반사(Circle Inversion)를 통해 선형 반사의 일반화된 개념도 탐구할 수 있습니다. 특히, 이 데모는 회전을 구현하는 데 sin이나 cos 같은 삼각 함수를 전혀 사용하지 않고, 오직 벡터의 투영과 반사만으로 구성된 코드를 제공하여 기하 대수(Geometric Algebra)의 핵심 개념을 보여줍니다. 수학적 원리를 시각적으로 학습하고자 하는 개발자, 수학 애호가, 그래픽 프로그래머에게 유용한 교육 도구입니다.

회전을 수행하는 데 삼각 함수가 전혀 필요 없습니다. 반사의 합성만으로 모든 변환을 구성하는 이 방법은 기하 대수의 핵심입니다.
  1. Sharlin

    주어진 각도를 이루는 두 벡터를 구성하려면(기사에서 말하듯이, 그중 하나는 임의로 선택할 수 있고, 가장 쉬운 방법은 그냥 (1, 0)을 사용하는 것입니다) 물론 삼각 함수가 필요합니다. 이는 각도에서 회전 행렬을 구성하는 데 삼각 함수가 필요한 것과 정확히 동등하며, 그 후에는 내적만으로 원하는 만큼 많은 벡터를 회전할 수 있습니다. 또는 e^ai = sin(a) + cos(a)*i를 구성하는 데 삼각 함수가 필요하지만, 그 후에는 복소수 곱셈만으로 충분한 것과 같습니다.

    2D 회전을 분해하는 또 다른 재미있는 방법은 세 개의 전단(shear)으로 분해하는 것입니다. 원래는 1986년 Paeth가 제시했습니다: https://silmon.github.io/arbitrary-image-rotation-using-shea...

  2. amluto

    차원 섹션은 제 '모호한 수학' 감각을 자극했습니다:

    > 평면을 가로지르는 이 지그재그 운동 동안 벡터는 위의 2D 경우와 완전히 같은 방식으로 평면을 따라 회전합니다.

    '평면'이 무엇인가요? 2D에서는 단일 평면이 하나 있습니다. 3D에서는 모든 회전이 2D 평면 내에서 회전하며, 원래 벡터의 평면의 직교 여공간으로의 사영(즉, 평면으로부터의 거리와 원래 점이 어느 쪽에 있는지)을 보존합니다.

    4D 이상에서는 죄송하지만, 우리의 멋진 3D 인간 직관은 모두 틀렸습니다. 두 평면에서 동시에 회전할 수 있으며, 이는 어떤 주어진 평면에서의 회전과 동등하지 않습니다.

    그리고 실제로 이 기사는 그 구성이 4차원 이상에서 작동하지 않는다는 증명에 꽤 가깝습니다. 여차원 1 초평면(즉, n-1 차원 초평면)에 대한 반사는 단일 기저 벡터를 부정합니다. 이 중 두 개를 수행하면 그 벡터들의 생성(span)이 2D 평면을 정의하고, 그 특정 평면에서만 회전을 얻으며 다른 곳에서는 얻지 못합니다. 그리고 이것은 일반적인 회전을 설명하기에 불충분합니다.

    물론 4D에서는 다른 종류의 반사 유사 연산이 있습니다. 예를 들어 3D에서 x와 y 좌표를 부정하면서 z는 그대로 두는 것과 같습니다. (그 특정 연산은 그 자체로 회전이며 패리티를 변경하지 않습니다!) '반사'의 개념을 적절히 확장할 의향이 있다면, 더 높은 차원에서 모든 회전을 생성할 수 있다고 생각합니다.

  3. kazinator

    강체 물리 모델인 2D 모양을 반사하려면 3D 공간에서 반사 축을 중심으로 회전해야 한다는 점에 유의하세요. 즉, 반사는 일시적으로 빌린 추가 차원을 포함하는 회전일 뿐입니다.

이 날의 다른 글

2026-08-22