package com.asha.vrlib.model;
/**
* Created by hzqiujiadi on 2017/4/20.
* hzqiujiadi ashqalcn@gmail.com
*/
public class MDHitPoint {
private static final MDHitPoint sPointNotHit = new NotHit();
private static final float sNotHit = Float.MAX_VALUE;
private float distance;
private float u;
private float v;
public MDHitPoint() {
asNotHit();
}
public void asNotHit(){
this.distance = sNotHit;
}
public boolean isNotHit(){
return this.distance == sNotHit;
}
public boolean nearThen(MDHitPoint other){
return this.distance <= other.distance;
}
public float getU() {
return u;
}
public float getV() {
return v;
}
public void set(float t, float u, float v) {
this.distance = t;
this.u = u;
this.v = v;
}
public static MDHitPoint min(MDHitPoint a, MDHitPoint b){
return a.distance < b.distance ? a : b;
}
public static MDHitPoint notHit(){
return sPointNotHit;
}
// not hit impl
private static class NotHit extends MDHitPoint {
@Override
public void set(float t, float u, float v) {
throw new RuntimeException("NotHit can't be set.");
}
}
}