/// <summary> /// /// </summary> private static void Set(V vertex, HeMesh3d.Face face) { if (!face.IsUnused) { vertex.Position = face.GetBarycenter(HeMesh3d.Vertex.Accessors.Position); } }
/// <summary> /// /// </summary> /// <param name="face"></param> /// <returns></returns> public override double Evalutate(HeMesh3d.Face face) { var p0 = transform.TransformPoint((Vector3)face.GetBarycenter()); return(Math.Abs(_distanceField.Evaluate(p0))); //return _distanceField.Evaluate(p0); }
/// <summary> /// /// </summary> public override double Evalutate(HeMesh3d.Face face) { var p0 = face.GetBarycenter(); var p1 = (Vec3d)transform.position; return(p0.DistanceTo(p1)); }
/// <summary> /// /// </summary> public override double Evalutate(HeMesh3d.Face face) { var p0 = face.GetBarycenter(); //var p1 = (Vec3d)transform.position; //return p0.DistanceTo(p1); var gs = RemapTextureGrayScale(p0.X, p0.Z); var gt = Mathf.InverseLerp(0, 1f, (float)gs); var ht = Mathf.InverseLerp(_minHeight, _maxHeight, (float)p0.Y); double value; if (gt == 1 || gt == 0 || ht == 1 || ht == 0) { value = double.MaxValue; } else { value = Mathf.Abs(gt - ht); } //print(gs+","+gt+','+ht+","+value); return(value); }
/// <summary> /// /// </summary> public override double Evalutate(HeMesh3d.Face face) { var p0 = face.GetBarycenter(); var th = GetToTerrainDistance((Vector3)p0); return(th); }
/// <summary> /// /// </summary> public override double Evalutate(HeMesh3d.Face face) { var p0 = face.GetBarycenter(); switch (_type) { case EvaluateType.FollowTerrain: return(GetFollowTerrain((Vector3)p0)); case EvaluateType.MinimalHeight: return(GetMinimalHeight((Vector3)p0)); case EvaluateType.MaximalHeight: return(GetMaximalHeight((Vector3)p0)); } throw new System.NotImplementedException(); }