gpt4 book ai didi

java - JAVA求线段长度

转载 作者:行者123 更新时间:2023-11-30 04:53:03 25 4
gpt4 key购买 nike

我想找到一条线的长度。我已经使用鼠标事件初始化了坐标 x1,y1,x2,y2。当我尝试找到距离时,如下所示:

public class LineFunctions {
static int dpi;
static double pixel_per_cm;
public LineFunctions(){
Toolkit tk;
tk=Main.frame.getToolkit();
dpi=tk.getScreenResolution();
pixel_per_cm=dpi/2.54;
}
public double lengthInPixel(int x1,int y1,int x2,int y2){
double length_in_pixel;
double x=Math.pow((x2-x1), 2);
double y=Math.pow((y2-y1), 2);
length_in_pixel = Math.sqrt(x+y);
return length_in_pixel;
}
public double lengthInCm(int x1,int y1,int x2,int y2){

double length_in_pixel=lengthInPixel(x1,y1,x2,y2);
double length_in_cm = length_in_pixel / pixel_per_cm;
System.out.println("Length in Cm= "+length_in_cm);
return length_in_cm;
}
}

Main.java

public class Main {
public static JFrame frame;
public static void main(String ar[]) {
frame=new JFrame("LINE FRAME");
}
static class ImageComponent extends JComponent implements MouseListener {
Line2D line;
int x1,y1,x2,y2;
public ImageComponent() {
addMouseListener(this);
addMouseMotionListener(this);
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D gd=(Graphics2D)g;
line=new Line2D.Double(x1,y1,x2,y2);
gd.draw(line);
}
@Override
public void mousePressed(MouseEvent e) {

x1=e.getX();
y1=e.getY();
}

@Override
public void mouseReleased(MouseEvent e) {
x2=e.getX();
y2=e.getY();
LineFunctions lf=new LineFunctions();
double length=lf.lengthInCm(x1,y1,x2,y2);
System.out.println("Line Length="+length);
repaint();
}
.......................
........................
}

这段代码从坐标中找到线条的长度,但是当我从RULER找到屏幕上绘制的线条的长度时,它并没有看到与我得到的长度相同的长度上面的代码。那么,这有什么问题以及如何找到线的确切长度?

最佳答案

您可以使用getNormalizingTransform()您的 GraphicsDeviceGraphicsConfiguration 来确定所需的几何图形。特别是,身份转换表示“用户空间中的 72 个单位等于设备空间中的 1 英寸。”

另请考虑Math.hypot()以获得更高的准确性。

关于java - JAVA求线段长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9442389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com