implements getNormal
diff --git a/src/geometries/Plane.java b/src/geometries/Plane.java
index b422d68..ab93e83 100644
--- a/src/geometries/Plane.java
+++ b/src/geometries/Plane.java
@@ -34,8 +34,11 @@
* @param p3 for the third point
*/
public Plane(Point3D p1, Point3D p2, Point3D p3) {
- this.q0 = p1;
- this.normal = null;
+ this.q0=p1;
+ Vector v1=p2.subtract(p1);
+ Vector v2=p3.subtract(p1);
+ Vector n =v1.crossProduct(v2);
+ this.normal=n.normalize();
}
@@ -63,7 +66,7 @@
@Override
public Vector getNormal(Point3D point3d) {
- return null;
+ return normal;
}
}
diff --git a/src/geometries/Sphere.java b/src/geometries/Sphere.java
index 41daa88..13d03ed 100644
--- a/src/geometries/Sphere.java
+++ b/src/geometries/Sphere.java
@@ -48,8 +48,8 @@
@Override
public Vector getNormal(Point3D point3d) {
-
- return null;
+ Vector vector = point3d.subtract(center);
+ return vector.normalized();
}
}
diff --git a/src/geometries/Triangle.java b/src/geometries/Triangle.java
index 5e47979..2762128 100644
--- a/src/geometries/Triangle.java
+++ b/src/geometries/Triangle.java
@@ -1,7 +1,7 @@
package geometries;
import primitives.Point3D;
-import primitives.Vector;
+
/**
* Triangle class represent a polygon with three vertices.
@@ -26,10 +26,6 @@
return vertices + ", " + plane ;
}
- @Override
- public Vector getNormal(Point3D point3d) {
- return null;
- }
-
+
}
diff --git a/src/geometries/Tube.java b/src/geometries/Tube.java
index 461a60a..815c126 100644
--- a/src/geometries/Tube.java
+++ b/src/geometries/Tube.java
@@ -50,8 +50,8 @@
@Override
public Vector getNormal(Point3D point3d) {
Vector t=point3d.subtract(axisRay.getP0());
- double t1=t.dotProduct(axisRay.getDir());
- Point3D O=axisRay.getP0().add(axisRay.getDir().scale(t1));
+ double projection=t.dotProduct(axisRay.getDir());
+ Point3D O=axisRay.getP0().add(axisRay.getDir().scale(projection));
Vector vector = point3d.subtract(O);
return vector.normalized();
}