Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1550 | Anzahl registrierter User: 1839 | Besucher online: 195
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Abstand zweier Punkte


Autor: Gast
Sprache: C++
Bewertung: 9
(1 Bewertung)
Anzahl der Aufrufe: 4838
  
Kick it on dotnet-kicks.de  

Beschreibung:

Längenberechnung von zwei Punkten

Abgelegt unter: Abstand, Punkte.



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <math.h>
using namespace std;


float laenge(int x1, int y1, int x2, int y2) {
	int distx;
	int disty;
	if (x1>=x2)  distx= x1-x2;
	else  distx= x2-x1;
	if (y1>=y2)  disty= y1-y2;
	else  disty= y2-y1;
	return (sqrt((float) (distx*distx)+(float) (disty*disty)));
}


float test_laenge ( int x1, int y1, int x2, int y2) {
	cout << "X_1 = " << x1 << "   Y_1 = " << y1 << "\n";
	cout << "X_2 = " << x2 << "   Y_2 = " << y2 << "\n";
	cout << "Laenge: " << laenge(x1,y1,x2,y2) << "\n\n";
	return 0;
}


int main () {
	test_laenge (0,0,12,5);
	test_laenge (-12,-2,-1,0);
	test_laenge (-4,3,8,8);
	test_laenge (8,11,-7,-10);
	test_laenge (8,11,8,11);
	return 0;
}

Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Juergen Geiss schrieb am:  01.06.2008 19:17:00

Das obere scheibt mir Mathematisch sehr unlogisch:
1. Könnte man den Betrag der Differenz nehmen, dann bräuchte man keine if then else Abfrage.
2. Wenn man später quadriert ist es doch egal, ob das Vorzeichen pos. oder neg. war.

Also könne man das ganze vereinfachen:
float laenge(int x1, int y1, int x2, int y2) {
int distx;
int disty;

distx= x2-x1;
disty= y2-y1;

return (sqrt((float) (distx*distx)+(float) (disty*disty)));
}
ActionLuzifer schrieb am:  25.05.2009 17:58:43

Das erscheint vielleicht mathematisch etwas unlogisch, hat aber durchaus seine Berechtigung.
Wenn man sich näher mit der Numerischen Mathematik (Mathematik auf/mit dem Rechner) befasst, dann merkt man schnell, dass man nicht einfach so drauflosrechnen kann wie man es von der Schule aus kennt.

Es treten bei so gut wie jeder Rechnung kleinste "Fehler" auf die sich gegenseitig beeinflussen können und dann das Ergebnis völlig nutzlos oder manche Algorithmen sind einfach schneller als andere, obwohl sie beide mathematisch das gleiche bewirken.

Selbst in dieser Variante sind die Ergebnisse schon nicht wirklich korrekt.
Bsp: P1=(6,5/1) P2=(1/4) und P3=(4,5/2,5)
echte Laengen:
P1-P2 = 6,2650
P1-P3 = 2,5
P2-P3 = 3,8079

Lösungen des Algorithmus:
P1-P2: 5.83095
P1-P3: 2.23607
P2-P3: 3.60555
Max Mayerhofer schrieb am:  12.03.2010 12:52:13

garnicht kommentiert : (
Ich hab noch ein gepost


Diese Snippets könnten für Sie interessant sein:

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.