我有一個問題,用PHP繪製不同的函數(當然是GD)。 我設法畫出不同的功能,但每當函數的參數發生變化時 - 函數浮動到任何需要的位置。 讓我們說,我有第一個函數y = x^2,我必須從-5到5繪製它。這意味着第一個點將在(-5; 25)。如果我知道這一點,我可以將其移至任何我想要的地方。但是如果我選擇y = 2x^2,間隔x =( - 5; 5)。第一點是(-5; 50)。所以我需要幫助計算如何移動任何函數,比方說,(0; 0)。 功能是拋物線/懸鏈線。從一個特定點開始的繪圖函數
0
A
回答
1
你想要做的是找到你正在製作的圖形的最大邊界。要做到這一點,你必須檢查每個拐點以及範圍界限。將每個座標對存儲在一個數組中
第1部分[範圍界限]: 從範圍邊界收集座標。
<?php
$ybound[] = f($minX);
$ybound[] = f($maxX);
第2部分[屈折]: 這部分是比較困難的。你可以有一系列的方程來解決每種拋物線的變形,或者你可以蠻橫的強迫它。要做到這一點,只是選擇一個小的增量,(什麼都你的小增量繪製的線),我將使用0.1
<?php
for($x = $minX; $x <= $maxX; $x += 0.1) {
$ybound[] = f($x);
}
注意,如果蠻力,你可以跳過第1部分,否則,如果你能夠計算出項目範圍的變化,那麼速度會更快
第3部分[最小最大值]: 現在您可以從可能的y值數組中獲得最小值和最大值。
<?php
$minY = min($ybound);
$maxY = max($ybound);
第4 [SHIFT]: 既然你有這樣的,應該進行調整非常簡單。通過將每個新座標調整爲該值,將左上角設置爲0,0。
<?php
$shiftX = -$minX;
$shiftY = $maxY;
有了這個信息,你也可以決定你的圖像大小
<?php
$imageX = $maxX - $minX;
$imageY = $maxY - $minY;
然後爲你生成你的座標,你將轉向各一臺,通過加入移動價值座標。
<?php
for($x = -$minX; $x <= $maxX; $x += 0.1) {
$ycoor = $shiftY - f($x);
$xcoor = $x + $shiftX;
//draw ...
}
繪製軸也很容易,
<?php
$xaxis = $shiftY;
$yaxis = $shiftX;
(我想我有我所有的跡象正確的。原諒我,如果他們關閉)
0
您首先需要確定邊界框你的功能。然後,計算寬度和高度,然後對其進行標準化,使其適合左上角座標爲(0,0)的矩形。也許你還需要將這個數字調整到特定的大小。
相關問題
- 1. PHP從特定節點開始構建樹的函數
- 2. 在畫布上繪圖會使行從第一個點開始
- 3. 從現有的3D繪圖/數據集繪製特定高度的繪圖點
- 4. 是否有可能從一個特定的數字開始「appendListItem」?
- 5. 從基點離開一定距離繪製一個點
- 6. 得到N個從數組從給定的點開始數
- 7. AnimationDrawable從特定幀開始?
- 8. SQL中的SUM值從另一個表中的特定點開始
- 9. 從特定日期開始倒計數
- 10. 從一個特定點
- 11. 總是從當前窗口頂部開始一個特定的點
- 12. 在R中,如何繪製這個特定函數的圖形?
- 13. 直到一個特定的數字,並重新開始+倒數
- 14. Xcode - >從一個特定的類開始構建
- 15. 從一個特定的字母開始選擇記錄
- 16. str_replace從一個字符串中的特定位置開始
- 17. jQuery UI的排序 - 當用戶開始從一個特定塊
- 18. 開始從一個特定的行讀取文件
- 19. MySQL選擇所有,並從一個特定的ID開始
- 20. 從另一個節點開始流?
- 21. 從一個節點開始邊緣
- 22. 從某一點開始scrolldiv
- 23. 你會如何繪製一個盒子圖和同一圖上的特定點?
- 24. 從右側開始繪製圖形
- 25. D3.js:從數據數組開始繪製簡單的線圖
- 26. 繪製一個已定義的函數
- 27. 核心繪圖 - 僅繪製圖中特定範圍內的點
- 28. 如何從一個特定單詞開始收集ElementById?
- 29. 從For循環中的特定點開始
- 30. 在python中集成一個函數與參數數組,開始點和終點
你有一些示例代碼? – Yoshi 2011-04-12 15:23:50