1 votos

Una forma computacionalmente sencilla de hallar la dirección de N26

Supongamos que tenemos una malla 3D integral $\mathbb{Z}^3$ y un conjunto de segmentos de línea $V = \{((0, 0, 0), (x, y, z)): x, y, z \in \mathbb{Z} \land (x, y, z) \ne (0, 0, 0)\}$ desde su origen hasta otro punto de la cuadrícula. Me gustaría encontrar el más cercano (por métrica euclidiana o por un ángulo entre $v$ y $\vec{0p}$ ) punto único $p \in N_{26}$ donde $N_{26} = \{(x, y, z): x, y, z \in \{-1, 0, 1\} \land (x, y, z) \ne (0, 0, 0)\}$ para cualquier $v \in V$ . Esto equivale a encontrar una dirección primaria N26 de $v$ . Si existe un término técnico para ello, me gustaría saberlo.

Me gustaría que el método fuera eficiente desde el punto de vista computacional, evitando quizás el uso de funciones trigonométricas. No tiene por qué ser perfectamente exacto: un pequeño porcentaje de error está bien si simplifica los cálculos.

1voto

Technophile Puntos 101

Sin pérdida de generalidad, supongamos que el extremo variable de $v$ es $(x,y,z)$ donde $x\ge y\ge z\ge0$ . Sólo hay tres puntos para probar - $(1,0,0)$ , $(1,1,0)$ y $(1,1,1)$ .

Sabiendo que $u\cdot v=|u|\cdot|v|\cos\theta$ calcula los tres valores $$v\cdot(1,0,0)=x$$ $$\frac{v\cdot(1,1,0)}{\sqrt2}=\frac{x+y}{\sqrt2}$$ $$\frac{v\cdot(1,1,1)}{\sqrt3}=\frac{x+y+z}{\sqrt3}$$ El vector que da el mayor resultado (para $\cos$ es decreciente en $[0,\pi]$ ) es el primario correcto $N_{26}$ dirección.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X