2012-04-12 3 views
-1

Ich mache nur eine grundlegende Anwendung, die nur Pixel entlang einer Kurve in C# schreibt.Vertikale Kurve Formel

Ich stieß auf this website with a formula that looks promising. Ich glaube, dass diese Webseite auch über das gleiche spricht here.

Was ich nicht wirklich verstehe, ist, wie man es implementiert. Ich habe versucht, den JavaScript-Code auf the first link zu betrachten, aber ich kann nicht wirklich sagen, welche Daten ich liefern muss. Die Dinge mit dem PVC, PVI oder PVT sind die Dinge, die ich nicht verstehe.

Die Beispielsituation, die ich einrichten werde, ist nur die beiden Grade (vertikale Steigung/Abnahme) ist nur 5 und -5. Angenommen, Punkt 1 ist 0, 0 und Punkt 2 ist 100, 100.

Kann jemand einige der obskuren Variablen in der Formel erklären und wie würde ich die Formel verwenden, um die Kurve zu zeichnen?

+2

Dies ist eine Frage-und-Antwort-Website. "Ich weiß nicht, wie ich es umsetzen soll", ist keine Frage. **Stelle eine Frage**. –

+0

Entschuldigung dafür, dass ich meine Anfrage nicht explizit formuliere, und hoffentlich kann ich meine Anfrage endlich verstehen, wenn ich jetzt wiederhole, was ich im ursprünglichen Beitrag gesagt habe, aber mit einer Frage davor. "Kannst du mir helfen, die Dinge zu verstehen, die ich nicht verstehe? Diese Dinge finden PVC, PVI und PVT." Ich bin mir ziemlich sicher, dass man davon ausgehen könnte, dass ich herausfinden will, was ich nicht verstehe, wenn ich sage "Ich verstehe nicht ..." Was soll ich sagen, dass ich etwas nicht verstehe, wenn Ich will es nicht verstehen? –

+2

StackOverflow ist keine Tutorial-Site. Eine gute Frage für diese Site ist etwas wie "Wie binde ich ein DataSet, das Abfrageergebnisse enthält, an eine GridView in einem C# Windows Forms-Projekt?" Eine * spezifische *, * technische * Frage.Niemand hier weiß, warum Sie die Dinge nicht verstehen, die Sie nicht verstehen, aber viele Leute hier wissen, wie man Datasets an Rasteransichten bindet. –

Antwort

3

Um eine Kurve in 2D zu zeichnen, variieren Sie normalerweise einen Parameter und sammeln dann x, y-Punktpaare und zeichnen die Paare. In Ihrem Fall wird es nur funktionieren, den horizontalen Abstand (x) zu variieren und dann die entsprechenden y-Werte zu sammeln, und dann können Sie diese grafisch darstellen.

Wie für die Formel ist es sehr unklar. Im Grunde ist es nur eine Parabel mit einem Haufen (schlecht definierten) Jargon um ihn herum. Um das zu graphisch darzustellen, möchten Sie x von 0 bis L variieren (das ist nicht offensichtlich, übrigens, ich musste die Mathematik berechnen, dh wie ich x ändern kann, so dass die Steigungen wie in der Abbildung sowieso aussehen würden Es ist 0 zu L, und sie hätten das sagen sollen).

ich nicht jetzt laufe C#, aber hoffentlich können Sie diesen Python-Code übersetzen:

from matplotlib.pyplot import plot, show 
from numpy import arange 

G1 = .1 # an initial slope (grade) of 10% (note that one never uses percentages directly in calculations, it's always %/100) 
G2 = -.02 # a final slope (grade) of 2% 
c = 0 # elevation (value of curve when x=0, that is, y at PVC 
L = 10. # the length of the curve in whatever unit you want to use (ft, m, mi, etc), but this basically sets your unit system 
N = 1000 # I'm going to calculate and plot 100 points to illustrate this curve 

x = arange(0, L, float(L)/N) # an array of N x values from 0 to (almost) L 

# calculate the curve 
a = (G2-G1)/(2*L) 
b = G1 
y = a*x*x + b*x + c # this is shorthand for a loop y[0]=a*x[0]*x[0] + b*... 

plot(x, y)  
show() 

print (y[1]-y[0])/(x[1]-x[0]), (y[-1]-y[-2])/(x[-1]-x[-2]) 

Die letzte Zeile gibt die Anfangs- und End-Pisten als Kontrolle (in Python neg Indizierung zählt von der Rückseite des Arrays), und dies entspricht dem, was ich für G1 und G2 angegeben habe. Die Handlung wie folgt aussieht:

enter image description here

Wie für Ihre Anfragen: „Das Beispiel Situation werde ich nur beide der Typen (vertikale Steigung/Gefälle) einzurichten, ist nur 5 und -5 Lasst uns. sagen wir, Punkt 1 ist bei 0, 0 und Punkt 2 ist 100, 100. ", in einer Parabel erhalten Sie grundsätzlich drei freie Parameter (entsprechend a, b und c), und hier, denke ich, haben Sie es überbewertet.

Was sind PVC, PVT und PVI? PVC: der Startpunkt, also Y_PVC ist die Höhe des Startpunktes. PVT: der Endpunkt. PVI: Wenn Sie eine Linie von PVC an der Anfangssteigung G1 (dh die Tangente an die Kurve links) und ähnlich von PVT zeichnen, wird der Punkt, an dem sie sich schneiden, PVI genannt (obwohl sich jemand diesen Punkt je interessieren würde) jenseits von mir).

+0

Vielen Dank, das ist genau das, was ich gesucht habe! –