public Point addPoint(Point p1, Point p2) { BigInteger gradient = this.gradient(p1, p2); BigInteger x = gradient.multiply(gradient).subtract(p1.getX()).subtract(p2.getX()); x = x.mod(this.p); BigInteger y = gradient.multiply(p1.getX().subtract(x)).subtract(p1.getY()); y = y.mod(this.p); return new Point(x, y); } 改成伪代码
时间: 2023-12-18 10:04:24 浏览: 58
```
FUNCTION addPoint(Point p1, Point p2):
gradient = this.gradient(p1, p2)
x = gradient * gradient - p1.getX() - p2.getX()
x = x % this.p
y = gradient * (p1.getX() - x) - p1.getY()
y = y % this.p
RETURN new Point(x, y)
END FUNCTION
```
相关问题
public Point minusPoint(Point p1, Point p2) { return addPoint(p1, negatePoint(p2)); }
这是一个Java方法,它接受两个Point对象作为参数,并返回它们的差。这个方法实际上是通过调用addPoint()方法和negatePoint()方法来实现的。addPoint()方法将两个Point对象相加,而negatePoint()方法将一个Point对象的坐标取反。通过使用这两个方法,我们可以实现两个Point对象的减法操作。
帮我看看这段代码:public interface ModelListener { public void update(); } import java.awt.Point; import java.util.ArrayList; public class Model { private ArrayList<Point> points; private ArrayList<ModelListener> listeners; public Model() { points = new ArrayList<Point>(); listeners = new ArrayList<ModelListener>(); } public void addListener(ModelListener l) { listeners.add(l); } public ArrayList<Point> getPoints() { return points; } public void addPoint(Point p) { points.add(p); notifyListeners(); // points changed so notify the listeners. } public void clearAllPoints() { points.clear(); notifyListeners(); // points changed so notify the listeners. } public void deleteLastPoint() { if(points.size() > 0) { points.remove(points.size() - 1); notifyListeners(); // points changed so notify the listeners. } } private void notifyListeners() { for(ModelListener l: listeners) { l.update(); // Tell the listener that something changed. } } public int numberOfPoints() { return points.size(); } public static void testModel() { Model m = new Model(); m.addListener(new ModelListener() { @Override public void update() { System.out.println(true + " (listener)"); } }); System.out.println(m.getPoints() == m.points); Point p1 = new Point(1, 2); Point p2 = new Point(3, 4); m.addPoint(p1); // Listener called. m.addPoint(p2); // Listener called. System.out.println(m.numberOfPoints() == 2); System.out.println(m.points.get(0) == p1); System.out.println(m.points.get(1) == p2); m.deleteLastPoint(); // Listener called. System.out.println(m.numberOfPoints() == 1); System.out.println(m.points.get(0) == p1); m.clearAllPoints(); // Listener called. System.out.println(m.numberOfPoints() == 0); m.notifyListeners(); // Listener called. } }
这段代码是一个MVC(Model-View-Controller)模式的示例,其中Model是数据模型,它存储一组点,并提供了添加、删除、清空点等操作。同时,Model还定义了一个ModelListener接口,用于通知监听器模型的变化。在Model中,有一个ArrayList存储所有的监听器,当模型的点集发生变化时,Model会通过notifyListeners()方法通知所有的监听器。
在testModel()方法中,我们可以看到如何使用Model。首先,我们创建一个Model对象m,并为其添加一个监听器。然后,我们测试m.getPoints()方法是否返回正确的结果,接着使用m.addPoint()方法添加两个点,并测试点的数量、位置等信息是否正确。接着,我们使用m.deleteLastPoint()方法删除一个点,并测试结果是否正确。最后,我们使用m.clearAllPoints()方法清空所有的点,并测试结果是否正确。在每个操作完成后,我们都可以看到监听器被调用,说明Model成功地通知了监听器。
阅读全文