Java LWJGL:如何判断鼠标是否在复杂形状的边界内?

Java LWJGL:如何判断鼠标是否在复杂形状的边界内?,java,game-engine,lwjgl,Java,Game Engine,Lwjgl,我的自定义OpenGL显示器上有一个复杂的椭圆形,当鼠标进入其边界时需要修改它的状态(正交透视图永远不会改变,因为这是一个2D游戏)。“我的椭圆”是使用以下命令创建的: public class RenderOval { public static double r = 0.2; public static double g = 0.3; public static double b = 0.5; public static void renderOval(double locX, double

我的自定义OpenGL显示器上有一个复杂的椭圆形,当鼠标进入其边界时需要修改它的状态(正交透视图永远不会改变,因为这是一个2D游戏)。“我的椭圆”是使用以下命令创建的:

public class RenderOval {
public static double r = 0.2;
public static double g = 0.3;
public static double b = 0.5;
public static void renderOval(double locX, double locY, double width, double height){
    GL11.glPushMatrix();

    //Set Drawing Color - Will Remain this color until otherwise specified
    GL11.glColor3d(r,g,b);  

    //Draw Circle
    GL11.glBegin(GL11.GL_POLYGON);
        //Change the 6 to 12 to increase the steps (number of drawn points) for a smoother circle
        //Note that anything above 24 will have little affect on the circles appearance
        //Play with the numbers till you find the result you are looking for
        //Value 1.5 - Draws Triangle
        //Value 2 - Draws Square
        //Value 3 - Draws Hexagon
        //Value 4 - Draws Octagon
        //Value 5 - Draws Decagon
        //Notice the correlation between the value and the number of sides
        //The number of sides is always twice the value given this range
        for(double i = 0; i < 2 * Math.PI; i += Math.PI / 24) //<-- Change this Value
                GL11.glVertex3d(Math.cos(i) * width+locX, Math.sin(i) * height+locY, 0.0);

    GL11.glEnd();
    //Draw Circle
    GL11.glPopMatrix();
}
}
公共类RenderOval{
公共静态双r=0.2;
公共静态双g=0.3;
公共静态双b=0.5;
公共静态空间渲染(双locX、双locY、双宽度、双高度){
GL11.glPushMatrix();
//设置图形颜色-将保持此颜色,直到另有规定
GL11.gl3d(r,g,b);
//画圈
GL11.glBegin(GL11.glu多边形);
//将6更改为12以增加更平滑圆的步长(绘制点的数量)
//请注意,高于24的任何内容对圆的外观几乎没有影响
//玩数字游戏,直到你找到你想要的结果
//值1.5-绘制三角形
//值2-绘制正方形
//值3-绘制六边形
//值4-绘制八角形
//值5-绘制十边形
//请注意该值与边数之间的相关性
//边数始终是给定此范围值的两倍
for(double i=0;i<2*Math.PI;i+=Math.PI/24)//答案描述了如何检查一个点是否在椭圆(椭圆形)内。它对包含较少边的形状没有帮助,但它有望为您提供一个起点。
if((Mouse.getX<(box.startX+box.width))&&((Mouse.getX>(box.startX)))){
mouse.isInXBounds = true;
}