我遇到了以下问题: 在3D中,有一个从平面中心到原点的矢量。该平面在该中心周围具有任意坐标,因此其法向量不一定是所提到的向量。因此,我必须围绕这个固定的中心旋转平面,使得所提到的矢量是平面的法向量。
我的第一个想法是计算向量和法向量之间的角度,但问题是如何旋转平面。
有什么想法吗?
答案 0 :(得分:0)
平面是数学实体,它满足以下等式:
package org.ip.sesion08;
import java.util.InputMismatchException;
import java.util.Scanner;
public class EntradaEnterosConExcepcion {
/**
* @param args
*/
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int number1 = 0;
int number2 = 0;
// Introducir dos enteros
System.out.print("Introduzca dos valores enteros: ");
boolean error = false;
while(!error){
try{
number1 = entrada.nextInt();
number2 = entrada.nextInt();
error = true;
}
catch (InputMismatchException ne){
System.out.print("Incorrecto, introduzca dos valores enteros: ");
}
}
System.out.println("La suma es " + (number1 + number2));
}
}
是法线,{{1}}是平面上的任意点(在这种情况下是中心点,如上所示)。 “旋转”这个方程是没有意义的 - 如果你想让飞机面向某个方向,只需使法线等于那个方向(即“提到的”矢量)。
您稍后在评论中提到“平面”是一个OpenGL四元组,在这种情况下,您可以使用Quaternions来计算旋转。
This Stackoverflow post告诉您如何计算从当前法线向量到“提到的”向量的旋转四元数。 This site告诉您如何将四元数转换为旋转矩阵(其尺寸为3x3)。
假设中心点被称为{{1}},并且您获得的旋转矩阵具有以下形式:
这只能围绕原点旋转几何体。围绕一般点的旋转需要 4x4 矩阵(OpenGL使用的矩阵),其构造如下: