Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java多边形的反射和其他变换_Java_Reflection_Graphics_Awt_Polygon - Fatal编程技术网

使用Java多边形的反射和其他变换

使用Java多边形的反射和其他变换,java,reflection,graphics,awt,polygon,Java,Reflection,Graphics,Awt,Polygon,我正在做一个需要我做简单的几何变换的项目: 翻译 x轴和y轴上的反射 在Javaapplet上绘制的一些图形上 前一个在小程序上工作的家伙正在从代表每个图形顶点的caretesian点的数组中绘制图形 我决定将图形表示为多边形,因为它为代码添加了更好的组织,我可以使用他使用的数组来构建一个图形,还因为我认为转换将变得更容易 在发现多边形没有任何反射方法后,我尝试了另一条路线: 我先将多边形转换为一个形状,然后再转换为一个区域,然后应用一个本应满足我要求的仿射变换;不幸的是,Graphics没

我正在做一个需要我做简单的几何变换的项目:

  • 翻译
  • x轴和y轴上的反射
Java
applet上绘制的一些图形上

前一个在小程序上工作的家伙正在从代表每个图形顶点的caretesian点的数组中绘制图形

我决定将图形表示为多边形,因为它为代码添加了更好的组织,我可以使用他使用的数组来构建一个图形,还因为我认为转换将变得更容易

在发现多边形没有任何反射方法后,我尝试了另一条路线:

我先将多边形转换为一个形状,然后再转换为一个区域,然后应用一个本应满足我要求的
仿射变换
;不幸的是,Graphics没有绘制区域对象的方法,我无法将其转换回形状

那么,有人知道使用多边形进行几何反射的方法吗?
或者,是否有其他方法可以执行此操作?

是否有任何原因不能为此编写自己的函数?比如:

Polygon reflectX(Polygon p) {
    Polygon np = new Polygon();
    for (int i = 0; i < p.npoints; i++) {
        np.addPoint(p.xpoints[i], -p.ypoints[i]);
    }
    return np;
}
多边形反射X(多边形p){
多边形np=新多边形();
对于(int i=0;i
只是实现了将每个点移动到正确位置的方法,就像Jonathan刚才所做的那样。我唯一的问题是,如果不破坏小程序中的其他代码,我就无法移动原点,因此使用这些负值会将图形从可视区域中移除。但是如果负值从可视区域中移除,您是如何进行反射的?也许你想要的实际上是两层——一个后端使用欧几里德几何正确地完成所有计算,另一个前端将这些渲染到屏幕上的适当位置。我以前没有做反射,很抱歉没有在原始帖子中澄清这一点。这是个好主意;我可以根据原点的位置对这些值应用偏移,以确保图形位于可绘制区域上。而且,我可能应该想到这一点;我要试一试。谢谢大家。你的可视区域也显示负象限吗?如果它只显示正的x和y象限,那么轴上的每一次反射都会使对象脱离网格。除非要将uopn反映到未放置在原点上的轴。我够清楚了吗?