Witam .
Napisałem program do automatycznego rysowania "cykloidy" .niby wszystko działa bez zarzutu ale program zaczyna od rysowania prostej od środka układu wsp. do lewego górnego rogu i dopiero wtedy zaczyna rysować poprawnie lecz w górze okna.
Chcę żeby zaczynał od początku osi X z lewej strony i kończył się na końcu osi X z prawej.
Proszę o pomoc.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace %%%%%
{
    public partial class PulpitAnimacji1 : Form
    {
        Pen Pieorotoru = new Pen(Color.Black, 2);
        Brush pedzielRysowaniaKulki = new SolidBrush(Color.Red);
        int jd_Xs, jd_Ys;
        int jd_Xp, jd_Yp, jd_Xt, jd_Yt;
        float KatFi = 0.0f;
        float WilkoscZmienyKataKulki = 1.5f;
        float WilkoscZminanyKataSpirali = 0.15f;
        float KatPolozemiaKulki;
        private Timer ZegarSpirali = new Timer();

        public PulpitAnimacji1()
        {

            InitializeComponent();
            this.Left = 20;
            this.Top = 20;
            this.Width = (int)(Screen.PrimaryScreen.Bounds.Width * 0.80);
            this.Height = (int)(Screen.PrimaryScreen.Bounds.Height * 0.80);
            this.SetAutoSizeMode(System.Windows.Forms.AutoSizeMode.GrowAndShrink);
            this.MaximizeBox = false;

            this.MinimizeBox = false;
            jd_Ys = jd_Yp = jd_Yt = this.Height / 2;
            jd_Xs = jd_Xp = jd_Xt = this.Height / 2;
            ZegarSpirali.Tick+=new EventHandler(Timer_zegar_Tick  );
            this.Paint+=new PaintEventHandler(PulpitAnimacji1_Paint);
            ZegarSpirali.Interval = 150;
            ZegarSpirali.Enabled = true;
        }

        private void Timer_zegar_Tick(object sender, EventArgs e)
        {
            if((jd_Yt>=0)&&(jd_Yt<this.Height))
            KatPolozemiaKulki=KatPolozemiaKulki+WilkoscZminanyKataSpirali;
            else
            KatPolozemiaKulki=0;
            this.Invalidate();
        }

        private void PulpitAnimacji1_Paint(object sender, PaintEventArgs e)
        {

            const int R = 10;
            KatFi = 0;
            jd_Xs = jd_Xp = jd_Xt = this.Width / 2;
            jd_Ys = jd_Yp = jd_Yt = this.Height /2;
            do
            {
                KatFi = KatFi + WilkoscZmienyKataKulki;
                jd_Xt = R * (int)(KatFi - Math.Sin(KatFi));
                jd_Yt = R * (int)(1 + Math.Cos(KatFi));

                //jd_Xt = jd_Xs + (int)(R * KatFi * Math.Cos(KatFi));
                //jd_Yt = jd_Ys + (int)(R * KatFi * Math.Sin(KatFi));
                e.Graphics.DrawLine(Pieorotoru, jd_Xp, jd_Yp, jd_Xt, jd_Yt);
                jd_Xp = jd_Xt;
                jd_Yp = jd_Yt;
            } while (KatFi <= KatPolozemiaKulki);
            e.Graphics.FillEllipse(pedzielRysowaniaKulki, jd_Xt -Trb_promienKulki.Value, jd_Yt -Trb_promienKulki.Value, Trb_promienKulki.Value, Trb_promienKulki.Value);

            System.Threading.Thread.Sleep(30);
        }
    }
}