Я бы хотел выяснить отклонение между двумя линиями рисования, используя следующий код, но по какой-то причине он просто кажется неправильным.
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
import javax.swing.*;
public class DrawLine extends JPanel {
private static final long serialVersionUID = 1L;
LinePoint[] lineA = new LinePoint[5];
LinePoint[] lineB = new LinePoint[5];
public void paintComponent(Graphics g) {
for(int i = 0; i < lineA.length; i++) {
lineA[i] = new LinePoint();
lineB[i] = new LinePoint();
}
int initialLocationPoint = 10;
for(int i = 0; i<lineA.length; i++) {
lineA[i].x = initialLocationPoint;
lineA[i].y = 100;
lineB[i].x = initialLocationPoint;
lineB[i].y = 100;
g.drawOval((int)lineA[i].x, (int)lineA[i].y, 1, 1);
g.drawOval((int)lineB[i].x, (int)lineB[i].y, 1, 1);
initialLocationPoint +=1;
}
System.out.println("DEVIATION: " + this.calculateDifference());
}
public double calculateDifference() {
double deviation = 0.0;
double deviationPerCordinate = 0.0;
for (int i = 0; i < lineA.length; i++) {
deviationPerCordinate = Math.sqrt( Math.pow(2, (lineB[i].x - lineA[i].x)) + Math.pow(2,(lineB[i].y - lineA[i].y)));
System.out.println("deviationPerCordinate " + i + ": " + deviationPerCordinate);
deviation = deviation + deviationPerCordinate;
}
return deviation;
}
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("Draw Line");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBackground(Color.white);
frame.setSize(400, 400);
DrawLine panel = new DrawLine();
frame.add(panel);
frame.setVisible(true);
}
РЕЗУЛЬТАТ:
deviationPerCordinate 0: 1.4142135623730951
deviationPerCordinate 1: 1.4142135623730951
deviationPerCordinate 2: 1.4142135623730951
deviationPerCordinate 3: 1.4142135623730951
deviationPerCordinate 4: 1.4142135623730951
ОТКЛОНЕНИЕ: 7.0710678118654755
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ:
Разве это не должно возвращать 0? поскольку разницы нет вообще, поскольку оба чертежа находятся в одинаковых местах / шнурах.
Кто-нибудь знает, что я здесь не так делаю? Это формула?