Bildpunktort berechnen, aber wie?

Es gibt 7 Antworten in diesem Thema, welches 1.646 mal aufgerufen wurde. Der letzte Beitrag (19. April 2021 um 23:30) ist von GoDot.

  • Hallo,

    wenn ich jeweils ein Punkt im Bildspeicher habe, möchte von diesen beiden Punkten die Mitte berechnen.

    Das Ganze scheint aber irgendwie schwieriger zu sein als ich dachte.

    In dieser Tabelle findet Ihr ein Beispiel für mein Problem.

    Bitte melde dich an, um diesen Anhang zu sehen.

    <EDIT MOD> Externe Bildverlinkungen sind nicht erlaubt, siehe Nutzungsbedingungen

    In der Adresse (dezimal) 8278 und 8534 befindet sich jeweils ein Punkt.

    Die Mitte ist bei 8562.

    Wie bringe ich den Cevi das bei?

    Kurz "gesagt", ich gebe 2 Punkte vor und er soll den dritten in der Mitte berechnen und setzen.

    Vielen Dank schon mal für die Hilfe und schöne Grüße

    Zappel-64

    5 Mal editiert, zuletzt von syshack (18. April 2021 um 16:01) aus folgendem Grund: Externe Bildverlinkungen sind nicht erlaubt, siehe Nutzungsbedingungen. Bild direkt eingefügt.

  • Da ist leider keine Tabelle. (Ich kann sie nicht sehen)

    hm... bei 320 x 200 Bildpunkten Gesamtauflösung ist die "Mitte" zwangsläufig ein Kompromiss.

    Ich hab das mit den Speicherstellen noch nicht ganz kapiert.

    Du könntest den 'Höhenunterschied' berechnen und durch 2 teilen. Das wäre der "Y offset" und den Spaltenunterschied /2 ,das wäre der X offset vom

    Ausgangspixel.

    Stefan

  • Hallo Stefan,

    jetzt sollte der Link funktionieren, schau' bitte nochmal. Leider habe ich nicht gefunden wie man ein Foto einfügt.

    Anhand der Tabelle siehst Du, dass es nicht mit "durch 2 teilen" getan ist.

    Wenn ich Bildpunkt 8278 und 8534 vorgebe, sollte der Cevi mir 8562 als Ergebnis setzen.

  • Ich schreibe mal kurz was ich machen möchte:

    Ich würde gerne ein Sierpinski-Dreieck in Assembler Programmieren.

    Das heißt, der User gibt dem Cevi 3 Punkte vor und die Anzahl der Berechnungen.

    Abschließend muss der User noch einen Startpunkt innerhalb der 3 Punkte setzen.

    Wenn von diesem Startpunkt aus zu einen der vorher gesetzten Punkte mittig ein neuer Punkt

    gesetzt wird, dieser nun als neuer Startpunkt fungiert und wiederum mittig zu einen der ursprünglich

    gesetzten Punkte ein neuer gesetzt wird und so weiter, dann sollte, mit der Zeit, ein Sierpinski-Dreieck entstehen.

    Problem ist nur dass der Bildschirmspeicher alle 8 Punkte -nach unten gesehen- einen Sprung von 313 Adressen macht.

  • Schau mal auf Bitte melde dich an, um diesen Link zu sehen.. Da sollte was passendes für Dich dabei sein.

    Kleiner Tip. Bilder nicht extern verlinken sondern immer im Forum hochladen. Steht auch so in den Nutzungsbedingungen. ;)

    Bitte melde dich an, um diesen Anhang zu sehen. :verehr: .: Mit Bitte melde dich an, um dieses Bild zu sehen.wäre das nicht passiert! :. :prof:  Bitte melde dich an, um diesen Anhang zu sehen.

    :syshack: .: Meine 3D-Drucker Teile auf :. Bitte melde dich an, um diesen Link zu sehen. :strom:

  • wenn ich jeweils ein Punkt im Bildspeicher habe, möchte von diesen beiden Punkten die Mitte berechnen.

    Das Ganze scheint aber irgendwie schwieriger zu sein als ich dachte.

    Die Berechnung ist deswegen schwierig, weil Du im falschen Zahlenraum rechen willst. Die übliche Vorgehensweise wäre, alle Bildschirmpunkte in einem Koordinatensystem zu berechnen (mit (0,0) = links oben) und anschließend diese Punkte in Bildschirmadressen umzurechnen. Wenn das Punktemalen schnell gehen muß, lassen sich hierfür auch größere Tabellen verwenden.

    Nebenbei: Eine Berechnung allein auf Basis von Bildschirmadressen dürfte in Deinem Fall schon deswegen nicht gelingen, weil dies die Bitposition innerhalb des Speicherbytes nicht miteinbezieht.

  • Bitte melde dich an, um diesen Link zu sehen. findest du alle Infos.

    Arndt

    GoDot C64 Image Processing
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.