Exponential Decay Screen Element AnimationC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Exponential Decay Screen Element Animation

Post by Anonymous »

pseudocode: < /p>

Code: Select all

DistanceToMove = distanceToMove*decayFactor;
xPos = xPos + distanceToMove;
< /code>
Ich versuche, dass ein Bildschirmelement an einem bestimmten Ort beginnt und in eine abnehmende Geschwindigkeit zu einer endgültigen Position geht.  Die Zielposition und der Zerfallsfaktor sind beide Variablen mit unbekannten Werten.  Ich muss wissen, welche Gleichung den Anfangswert von Distanzetomove darstellt, der dazu führen würde, dass das Programm nicht mehr als 2 Einheiten aus der Zielposition abschließt, wenn die variable Distanz 3 -mal eingestellt ist. />  xpos = targetPos < /p>
Ich bin nicht mehrverlust, was zu tun ist, weil es gut anerkannt ist, dass eine Variable niemals mathematisch einer modifizierten Version von sich selbst entsprechen kann. Dies setzt voraus, dass der Zerfallsfaktor und die Zielposition definiert wurden. Wenn die X -Position 31 Mal festgelegt ist, sollte es nicht mehr als 2 Einheiten vom gewünschten Ort entfernt sein, was zu einem reibungslosen exponentiellen Effekt führt. Eine Gleichung sollte in der Lage sein, zu bestimmen, welcher Anfangswert von Distancetomove das Programm bei 31 -mal festlegen, unabhängig vom Zerfallsfaktor oder der Zielposition, vorausgesetzt, der Zerfallsfaktor liegt zwischen Null und einer und die Zielposition ist positiv. < /P>
using System;
using System.Threading;

class Program
{
static float posX = 0f;
static float distanceToMove = 500.0f; // Initialize with a nonzero value
static float decayFactor = 0.5f;
static float targetPos = 2000.0f;
static int exponentCounter = 0;

static void Main()
{
Console.WriteLine($"Initial posX: {posX}");

while (posX < targetPos) // Adds exit condition to prevent infinite loop
{
Update();
Thread.Sleep(16);
}

Console.WriteLine("Target position reached!");
}

static void Update()
{
posX = posX + distanceToMove;
distanceToMove = distanceToMove * decayFactor;
exponentCounter++;
if (exponentCounter == 31) {
Console.WriteLine($"posX: {posX}, distanceToMove: {distanceToMove}");
}
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post