我使用拉撒路因爲我非常喜歡TChart
組件。我已經作出瞭解決一些不等式等中的程序:如何繪製拋物線
(德爾塔=判別)的解決方案,爲2×^ 2 + 6X + 4> 0是x<-2
和x>-1
。這是正確的,但正如你可以看到我有一個TPicture
組件,下面顯示一張圖表與圖表。我用Gimp做了那個。
我想用一些適當的組件製作圖表。正如我已經說過的,我在Lazarus上發現了它們,但是您是否知道Delphi XE5上還有什麼方法?我可以在哪裏看看?
我使用拉撒路因爲我非常喜歡TChart
組件。我已經作出瞭解決一些不等式等中的程序:如何繪製拋物線
(德爾塔=判別)的解決方案,爲2×^ 2 + 6X + 4> 0是x<-2
和x>-1
。這是正確的,但正如你可以看到我有一個TPicture
組件,下面顯示一張圖表與圖表。我用Gimp做了那個。
我想用一些適當的組件製作圖表。正如我已經說過的,我在Lazarus上發現了它們,但是您是否知道Delphi XE5上還有什麼方法?我可以在哪裏看看?
首先,你的設置符號很奇怪。你的意思是S =(-∞,-2)∪(-1,∞),即S是兩個開放區間的聯合。你也可以寫成S = [-2,-1]^C或S = {x∈ℝ:x < -2或x> -1}。另外,你的照片肯定不是拋物線。它看起來更像一個雙曲線。
無論如何,繪製函數的圖形f:ℝ→ℝ很簡單。您只需要處理邏輯座標系和屏幕座標系之間的座標轉換。定義
type
TRealVector = record
X, Y: real;
end;
在ℝ²一個點,你的地圖是
const
xmin = -10;
xmax = 10;
ymin = -10;
ymax = 10;
function TForm5.LogToScreen(LogPoint: TRealVector): TPoint;
begin
result.X := round(ClientWidth * (LogPoint.X - xmin)/(xmax - xmin));
result.Y := ClientHeight - round(ClientHeight * (LogPoint.Y - ymin)/(ymax - ymin));
end;
function TForm5.ScreenToLog(ScreenPoint: TPoint): TRealVector;
begin
result.X := xmin + (ScreenPoint.X/ClientWidth) * (xmax - xmin);
result.Y := ymin + (ymax - ymin) * (ClientHeight - ScreenPoint.Y)/ClientHeight;
end;
然後你只需要繪製!
procedure TForm5.FormPaint(Sender: TObject);
var
PrevPoint, CurrPoint: TPoint;
x: integer;
logx: real;
logy: real;
y: integer;
begin
PrevPoint := Point(-1, -1);
Canvas.Brush.Color := clWhite;
Canvas.FillRect(ClientRect);
for x := 0 to ClientWidth - 1 do
begin
logx := ScreenToLog(Point(x, 0)).X;
logy := logx*logx; // y = f(x)
y := LogToScreen(RealVector(logx, logy)).Y;
CurrPoint := Point(x, y);
if PrevPoint.X = -1 then
Canvas.MoveTo(CurrPoint.X, CurrPoint.Y)
else
Canvas.LineTo(CurrPoint.X, CurrPoint.Y);
PrevPoint := CurrPoint;
end;
end;
不要忘記:
procedure TForm5.FormResize(Sender: TObject);
begin
Invalidate;
end;
完美而真棒。非常好的答案 –
你的一套符號是很奇怪的。你的意思是S =(-∞,-2)∪(-1,∞),即S是兩個開放區間的聯合。你也可以寫成S = [-2,-1]^C或S = {x∈ℝ:x < −2 or x > -1}。另外,你的照片肯定不是拋物線。它看起來更像一個雙曲線。 –
您可以在感興趣的時間間隔內繪製曲線,並使用該曲線代替手繪圖片......或者我誤解了某些東西? –
剛剛檢查了['Delphi XE5功能矩陣'](http://www.embarcadero.com/products/rad-studio/rad-studio-feature-matrix.pdf);它包含TeeChart標準,所以在Delphi XE5中有'TChart'組件可用(如果你喜歡的話)。 – TLama