我想取兩個點和兩個切線並求解給定x的y。但是,我在網上找到的所有資源在線上都與我需要的資源有所不同。所有的資源都允許我找到x和y,給出0和1之間的百分比。這不是我所需要的。我會盡量解釋我的意思與下面的圖片:貝塞爾曲線 - 使用(圖)X解決Y
我知道這個曲線是多的貝塞爾行,但我只是想提出一個觀點。在一條非常曲線的線上展示會更容易一些。如果我嘗試在網上找到的公式中獲得.5的百分比的y輸出,我將(可能)大約得到紅點。這不是我想要的。我想在圖上解決.5,而不是使用圖的百分比。我想解決藍線問題。有誰知道我能做到這一點?另外,如果我使用循環進行循環,是否可以找到兩個y值?
如果有人給我寫一個小樣本,我使用C#和變量: Vector2 start,tan1,end,tan2; //每個都包含x和y float float time; //時間對我們要解決的(0和1之間)
Vector2 start = new Vector2(50, 150), end = new Vector2(150, 150), tan1 = new Vector2(65, 30), tan2 = new Vector2(90, 160), delta;
float t = .5f;
delta = end - start;
GLDraw.DrawBezier(start, tan1, end, tan2, Color.red, 1);
GLDraw.DrawBox(new Rect(tan1.x - 1, tan1.y - 1, 2, 2), Color.red, 1);
GLDraw.DrawBox(new Rect(tan2.x - 1, tan2.y - 1, 2, 2), Color.red, 1);
float X = Mathf.Pow((1 - t), 3) * start.x + 3 * Mathf.Pow((1 - t), 2) * t * tan1.x + 3 * (1 - t) * Mathf.Pow(t, 2) * tan2.x + Mathf.Pow(t, 3) * end.x;
float Y = Mathf.Pow((1 - t), 3) * start.y + 3 * Mathf.Pow((1 - t), 3) * t * tan1.y + 3 * (1 - t) * Mathf.Pow(t, 2) * tan2.y + Mathf.Pow(t, 3) * end.y;
GLDraw.DrawBox(new Rect(X - 1, Y - 1, 2, 2), Color.red, 1);
[
特別是你遇到了什麼樣的問題與代碼。我們不是一個代碼寫作服務。 –
因爲它們不是經典函數圖,所以無法爲特定的「x」值求解貝塞爾曲線。你可以定義一個單一的貝塞爾曲線,它有相同'x'的3個解。但是,您可以將曲線與以'(x,0)'開始的垂直線相交併檢索所有可能的交點。 – Psi
問題是我不知道完成這個任務所需的數學。但是我使用的是Unity,並且我不是直接創建Bezier曲線,而是使用了我沒有寫過的函數。我將暫時將代碼作爲編輯粘貼。 – TheNoobieWaffle