renephoenix.de

Homepage von René Pönitz

Fahrradroutenplaner für Berlin

Die beste Idee seit der Erfindung des (Fahr-)Rades: der Fahrradroutenplaner bbbike

Bei der Routenberechnung berücksichtigt er die verschiedene Sonderwünsche der Radfahrer, unter anderem der Fahrbahnbelag (keine Pflastersteine, Rennradtauglich), Häufigkeit der Ampeln (die widerrum bei der Gesamtfahrtzeit einkalkuliert werden), Grüne Wege oder die mangelhafte Beleuchtung (die Steigung nicht).

Die aufgestellte Route wird sehr detailliert aufgelistet, bei Kreuzungen sogar die abzubiegende Winkel. Das Ergebnis kann man sich nun auf verschiedene Weisen anzeigen: als herunterladbare Dateien (PNG, PDF) oder für Erd-Google.

Der Routenplaner ist im Rahmen einer Diplomarbeit entstanden (zur Arbeit), u.a. auch zu den zu grunde liegenden Algorithmen.

Rotationen mit PS-Tricks / LaTeX

Gerrit veröffentlichte heute ein Tutorial, wie man mit Adobe Illustrator es schafft, ein bestimmtes Objekt zu rotieren, also so daß es gleichmäßig im Kreis angeordnet ist und jeweils zum Kreisbogen gedreht ist – ein schönes Beispiel auch für die Leistungsfähigkeit von LaTeX. Bereits in meiner Diplomarbeit setzte ich eine einfache Abwandlung dieses Beispiels ein.

PSTricks ist ein leistungsfähiger Aufsatz für LaTeX, mit Hilfe von PostScript-Befehlen Grafiken zu erzeugen. Mit Hilfe bestimmter Erweiterungen wie pf für interne Berechnungen und multido für sich wiederholende Tätigkeiten lassen sich viele schöne Automatismen erstellen.

% Anzahl der Elemente
\newcommand*{\anzahl}{30}
% Berechnung des Winkels je Elemet 1 := 2/3
\FPdiv{\wert}{360}{\anzahl}
% Positionierung. \ra = Winkel für Position,  \rb= Drehung
\multido{\ra=0+\wert,\rb=270+\wert}{\anzahl}{\rput[c](4; \ra){\begin{rotate}{\rb}\includegraphics[width=0.3cm]{vorlage}\end{\rotate}}}

Zugegebenermaßen sind fortgeschrittene Kenntnisse in LaTeX notwendig, um diese drei Zeilen zu verstehen. In der ersten Zeile legen wir einen Parameter mit der Anzahl der Elemente fest. In der zweiten wird der Winkel zwischen zwei beliebigen Elementen bestimmt. Die dritte Zeile ist sehr komplex: (von innen nach außen)

  • includegraphics bindet die Datei „vorlage” (er sucht sich automatisch eine passende Endung, in dem Falle eps). Das Bild soll 0.3cm groß sein.
  • rotate dreht das Bild um den Winkel, der mit dem Parameter rb eingebunden wird.
  • rput positioniert das gedrehte Bild. Die Angabe erfolgt im Polarkoordinatensystem, d.h. es wird die Entfernung zum Mittelpunkt sowie der Winkel angegeben. Letzteres ist hier der Parameter ra
  • multido läßt diese Befehle wiederholen, der Parameter anzahl gibt an wie oft. Ebenso werden hier für jede Wiederholung die Werte für ra und rb festgelegt. Konkret zu lesen ist es so: im ersten Durchlauf ist ra 0, bei jedem weiteren erhöht es sich hier um den Winkel.

Da diese Grafik letztendlich programmiert ist, hat man auch die Macht, ohne nennenswerten Aufwand das Beispiel zu verändern. Nur durch Veränderung der Befehle ließe sich auch eine Spirale bauen.

Rotationen mit PS-Tricks / LaTeX - Quelltext

Datei herunterladen (LaTeX, 1.4 KiB)

\documentclass[12pt,a4paper,oneside]{scrreprt}

%% PS-Tricks
\usepackage{pst-pdf}
\usepackage{pstricks, pst-node, pst-plot, pst-math, pst-optic, pst-lens, pst-text, pst-xkey, pstricks-add}

%% Befehle wiederholbar
\usepackage{multido}
%% Drehung von einzelnen Objekten
\usepackage{rotating}
%% Mathematische Berechnungen
\usepackage{fp}

\begin{document}

\setlength{\parskip}{0.0ex}
\psset{xunit=1cm,yunit=-1cm,runit=1cm, nodesep=3pt,linewidth=1pt}
\begin{pspicture}(-5,-5)(5,5)

%% Anzahl der Elemente
\newcommand*{\anzahl}{30}
%% Berechnung des Winkels je Elemet
\FPdiv{\wert}{360}{\anzahl}
%% Positionierung. \ra = Winkel für Position, \rb = Inklusive Drehung.
\multido{\ra=0+\wert,\rb=270+\wert}{\anzahl}{\rput[c](4;\ra){\begin{rotate}{\rb}\includegraphics[width=0.3cm]{vorlage}\end{rotate}}}

\renewcommand*{\anzahl}{4}
\FPdiv{\wert}{360}{\anzahl}
\multido{\ra=0+\wert,\rb=270+\wert}{\anzahl}{\rput[c](3;\ra){\begin{rotate}{\rb}\includegraphics[width=0.6cm]{vorlage}\end{rotate}}}

\renewcommand*{\anzahl}{18}
\FPdiv{\wert}{360}{\anzahl}
\multido{\ra=0+\wert,\rb=270+\wert}{\anzahl}{\rput[c](2;\ra){\begin{rotate}{\rb}\includegraphics[width=0.2cm]{vorlage}\end{rotate}}}

\renewcommand*{\anzahl}{7}
\FPdiv{\wert}{360}{\anzahl}
\multido{\ra=0+\wert,\rb=270+\wert}{\anzahl}{\rput[c](1;\ra){\begin{rotate}{\rb}\includegraphics[width=0.3cm]{vorlage}\end{rotate}}}

\end{pspicture}
\end{document}