using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Timeline;
public class TimeControl : MonoBehaviour,ITimeControl
{
public GameObject effectPrefab;
GameObject effect;
Vector3 origin, target;
private void Awake()
{
origin = GameObject.Find("坤坤子").transform.position+ GameObject.Find("坤坤子").transform.forward*0.6f+Vector3.up;
target=GameObject.Find("Pos").transform.position;
}
public void OnControlTimeStart()
{
if(effect==null)
{
effect=Instantiate(effectPrefab);
}
}
public void OnControlTimeStop()
{
if (effect != null)
{
DestroyImmediate(effect);
Destroy(gameObject);
}
}
public void SetTime(double time)
{
List<Vector3>list= new List<Vector3>();
list.Add(origin);
list.Add(Vector3.Lerp(origin, target, 0.5f) + Vector3.up * 3);
list.Add(target);
effect.transform.position = BSR(list,(float) time);
}
public Vector3 BSR(List<Vector3> list,float time)
{
List<Vector3> newList=new List<Vector3>();
for (int i = 0; i < list.Count-1; i++)
{
newList.Add(Vector3.Lerp(list[i], list[i+1],time));
}
if (list.Count == 1)
{
return list[0];
}
else
{
return BSR(newList, time);
}
}
}
贝塞尔曲线是一种数学曲线,它由一系列控制点定义,并通过这些控制点的位置来决定曲线的形状。这种曲线在计算机图形学中有着广泛的应用,例如在绘制平滑的线条和曲线时。贝塞尔曲线可以是一阶、二阶、三阶或更高阶的,每增加一个控制点,曲线的阶数就增加一阶。
贝塞尔曲线的特点
- 端点插值性质:贝塞尔曲线始终通过其起始点和结束点。
- 端点切线定理:曲线在起点和终点的切线方向等于通过这些点的控制线段的方向。
- 凸包性质:贝塞尔曲线位于其所有控制点构成的凸包内部。
-
仿射变换不变性:通过仿射变换(平移、旋转、缩放等)得到的新曲线仍然是贝塞尔曲线。
-
变差缩减性质:贝塞尔曲线通常比通过相同控制点的折线要光滑。
贝塞尔曲线的应用
贝塞尔曲线在计算机图形学中被广泛使用,例如在矢量图形编辑软件中绘制路径,或者在动画制作中创建平滑的运动轨迹。此外,它们也被用于工业设计、建筑设计以及其他需要精确控制形状和运动的领域。
贝塞尔曲线的计算
贝塞尔曲线的计算涉及到复杂的数学公式,但是在计算机编程中,这些计算通常由图形库自动处理。开发者只需指定控制点的位置,图形库就会负责计算并渲染出相应的曲线。
以上信息基于最新的搜索结果,希望能够帮助您更好地理解贝塞尔曲线。