2016-10-15 3 views
1

Wenn ich zu viel zoome und das Bild mit meiner Maus ziehe, bewegt es sich einfach zu schnell. Wenn ich zu weit hinausziehe, zieht sich das Bild sehr langsam. DieseIch habe ein Problem beim Vergrößern eines Fraktals (webgl)

ist, wie es in (Skala) ein- und wie es schleppt das Bild um (xPos, yPos)

fPosition.x = fPosition.x * scale + xPos; 
fPosition.y = fPosition.y * scale + yPos; 

Was soll ich tun, um dieses Problem beheben?

Antwort

0

Sie müssen die Bewegung nach der inversen Skala anpassen. Wenn Sie bei 1: 1 keinen Zoom verwenden, verschieben Sie das Bild um 1 Pixel für jedes Pixel, das Sie ziehen.

Wenn Sie auf 2 zu 1 gezoomt haben. Ein Pixel ist jetzt 2 Pixel breit (Sie haben eine Skala von 2) Sie möchten das Bild immer noch mit der gleichen Bildschirmgeschwindigkeit ziehen, so dass Sie 1/scale Pixel für jedes Pixel verschieben Sie ziehen. 1/2 = 0.5 für jedes Pixel bewegen Sie Ihre Maus/Zeiger/Touch-Sache.

Wenn die Größe 0,5 auf 1 verkleinert wurde, die Skalierung jetzt 0,5 ist und die Bilder die Hälfte der Größe sind, müssen Sie sie verschieben 1/scale Pixel für jedes Pixel, das Sie ziehen.

Also Maßstab ist, wie groß ein Pixel ist und Bewegung ist das Gegenteil dieser Skala. 1 Teilungsskala

+0

fPosition.x = fPosition.x * Skalierung + xPos * (1/Skalierung); – Besta

+0

Wenn ich es so gemacht hätte, würde es die Position beim Zoomen ändern. – Besta

+0

@Besta nur eine Position koordinieren, nicht 2 und fügen Sie hinzu. (Im Shader) 'fPosition = pos * scale;' und wenn Sie (in Javascript) 'pos + = ziehen * (1/scale);' – Blindman67

Verwandte Themen