Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

Jak narysować odcinek prostopadły do prostej



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Algorytmy + inżynieria oprogramowania
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 6840
Skąd: Toruń

PostWysłany: Nie Lut 24, 2008 10:27 pm      Temat postu: Jak narysować odcinek prostopadły do prostej Odpowiedz z cytatem Pisownia

Pozwolilem sobie na odświeżenie tego posta ponieważ nie wiem dalej jak to ugryźć.

Było sporo tematów na forum o prostych prostopadłych.
Jednak tam rozważano czy proste się przecinają.

Ja juz jakiś czas kombinuję taki przypadek i nie mogę dać rady:
Mam pierwszy odcinek o współrzednych (x1,y1)- (x2,y2).
Następnie wybieram dowolny punkt na płaszczyżnie o wsp. (x3,y3).
Chciałbym z tego punktu poprowadzić odcinek prostopadły do odcinka pierwszego, kończacy się na tym pierwszym odcinku,
lub jesli wypadnie to poza pierwszym odcinkiem , to na prostej wyznaczonej przez pierwszy odcinek.

Posłużyłem sie równaniem prostej i skleciłem ponizszy kod.
Jednak tutaj umiem narysować tylko odcinki prostopadłe, których proste sie przecinają , a przecięcie się samych odcinków osiagnąłem dobierając doswiadczalnie ich współrzedne.

Kod:
Private Sub Command3_Click()
Dim A As Double, B As Double, StartX As Double, StopX As Double
Dim Wynik As String, C As Double

'Dane pierwszej prostej'
  StartX = 10500
  StopX = 12800
  A = 0.7  'wspólczynnik kierunkowy pierwszej prostej'
  B = 25
  Me.ForeColor = vbBlue
  Wynik = RysujProstą(A, B, StartX, StopX)

'Dane drugiej prostej '
   B = 24000
   StartX = 10500: StopX = 12800

'Oblicz współczynnik kierunkowy drugiej prostej'
  'wg wspólczynnika pierwszej prostej'
  C = -1 / A
  A = C
  
   Me.ForeColor = vbRed
  Wynik = RysujProstą(A, B, StartX, StopX)
End Sub



'-----------------------------------------------------------------'
Public Function RysujProstą(A, B, StartX, StopX)
  Dim WspY1 As Double
  Dim WspY2 As Double

   'Oblicz współrzędne y dla poczatku i dla konca linii'
   WspY1 = A * StartX + B
   WspY2 = A * StopX + B
   Me.Line (StartX, WspY1)-(StopX, WspY2), Me.ForeColor


RysujProstą = "OK"
End Function
-----------------------------------------------------------------'


W tym kodzie wartości B i A są przyjete doświadczalnie tak , aby rysunek odcinków nie był poza ekranem i aby te odcinki sie przecieły,
natomiast współczynnik kierunkowy A dla drugiej prostej jest wyliczany tak aby były one prostopadłe.

Nie wiem jednak jak wyliczyć współrzedną punktu przeciecia sie tych prostych,
bo chciałbym drugi odcinek tylko rysować od jego znanego poczatku do punktu przecięcia.

_________________
Pisz poprawnie Errare humanum est ale - 'W życiu bowiem istnieją rzeczy, o które warto walczyć do samego końca.'(P. Coelho)
VistaSP2+VB 2008 EE + .NET 3.5 + IE 9.0.8112 / Testuję programy na Windows 7/8
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
kaczan87



Dołączył: 15 Cze 2007
Posty: 86
Skąd: b-stok

PostWysłany: Pon Lut 25, 2008 10:42 am      Temat postu: Odpowiedz z cytatem Pisownia

Punkt przecięcia się prostych liczysz z układu:
y=a1 * x+b1
y=a2 * x+b2
gdzie a,b - współczynniki prostej, a (x,y) - punkt przecięcia tych prostych.[/tex]
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Numer GG
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Algorytmy + inżynieria oprogramowania Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.05627 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | VB4all | Tansze zakupy w Helionie | MS Office Blog |