From f85fd14288610363822b2a9f2781f908698020d5 Mon Sep 17 00:00:00 2001 From: Cimbir Date: Fri, 5 Jan 2024 15:53:58 +0400 Subject: [PATCH] Rotating Star Solution and Explanation --- problem-set/RotatingStar.java | 106 +++++++++++++++ problem-set/RotatingStar.md | 127 ++++++++++++++++++ .../images/rotating-star-5-point-ex.jpeg | Bin 0 -> 39538 bytes 3 files changed, 233 insertions(+) create mode 100644 problem-set/RotatingStar.java create mode 100644 problem-set/RotatingStar.md create mode 100644 problem-set/images/rotating-star-5-point-ex.jpeg diff --git a/problem-set/RotatingStar.java b/problem-set/RotatingStar.java new file mode 100644 index 0000000..3c187a2 --- /dev/null +++ b/problem-set/RotatingStar.java @@ -0,0 +1,106 @@ +/* + * File: RotatingStar.java + * ----------------------- + * This program draws a customizable star and makes it rotate + */ + +import java.util.ArrayList; + +import acm.graphics.*; +import acm.program.*; +import javafx.util.Pair; + +public class RotatingStar extends GraphicsProgram { + + // Size of the application + int appWidth = 1000; + int appHeight = 1000; + + // Center the star will be generated at + GPoint center = new GPoint(appWidth / 2, appHeight / 2); + // Amount of corners the star will have + int points = 5; + // Amount of points jumped from start to end of single line + int jumpAm = 2; + // Radius of the star + int length = 400; + // The degree at which the star spins in one iteration + double speed = 0.5; + // The delay between iterations + int delay = 5; + + public void run() { + setSize(appWidth, appHeight); + + Pair, ArrayList> starInfo = generateStar(); + // Lines the star contains + ArrayList starLines = starInfo.getKey(); + // The degree of each line + ArrayList starDegs = starInfo.getValue(); + + while (true) { + rotateStar(starLines, starDegs); + pause(delay); + } + } + + /* + * Pre-Condition : None + * + * Post-Condition : Displays the star and returns all the relevant information about it + */ + private Pair, ArrayList> generateStar() { + // Amount of radians between each corner + double jumpDeg = 2 * Math.PI / points; + + ArrayList lineRes = new ArrayList(); + ArrayList degRes = new ArrayList(); + for (int i = 0; i < points; i++) { + // Get cords of the start and end of a line + GPoint start = getPointOnCircle(i * jumpDeg); + // End corner is always jumpAm amount of corners after the starting corner + GPoint end = getPointOnCircle((i + jumpAm) * jumpDeg); + + GLine curLine = new GLine( + start.getX(), start.getY(), + end.getX(), end.getY()); + + lineRes.add(curLine); + degRes.add(i * jumpDeg); + add(curLine); + } + return new Pair, ArrayList>(lineRes, degRes); + } + + /* + * Pre-Condition : None + * + * Post-Condition : Returns the coordinates of a point on the star circle at deg radians + */ + private GPoint getPointOnCircle(double deg) { + return new GPoint( + center.getX() + length * Math.cos(deg), + center.getY() + length * Math.sin(deg)); + } + + /* + * Pre-Condition : Star has to be already generated + * + * Post-Condition : Rotates the star by speed radians + */ + private void rotateStar(ArrayList starLines, ArrayList starDegs) { + double jumpDeg = 2 * Math.PI / points; + for (int i = 0; i < points; i++) { + // Calculate the next rotation degrees + double nextDeg = (starDegs.get(i) + speed) % (2 * Math.PI); + + // Move line points + GPoint nextStart = getPointOnCircle(nextDeg); + GPoint nextEnd = getPointOnCircle(nextDeg + jumpAm * jumpDeg); + + starLines.get(i).setStartPoint(nextStart.getX(), nextStart.getY()); + starLines.get(i).setEndPoint(nextEnd.getX(), nextEnd.getY()); + starDegs.set(i, nextDeg); + } + } +} \ No newline at end of file diff --git a/problem-set/RotatingStar.md b/problem-set/RotatingStar.md new file mode 100644 index 0000000..9bec849 --- /dev/null +++ b/problem-set/RotatingStar.md @@ -0,0 +1,127 @@ +# Rotating Star + +ამოცანა: +``` +გამოვსახოთ ვარსკვლავი, რომელიც ტრიალებს +``` + +ამ ამოცანის სირთულე იმაში მდგომარეობს, რომ მცირედით მოითხოვს მათემატიკურ ცოდნას, თუმცა ძირითადი მიზანი არის ის, რომ სტუდენტს აჩვენოს განზოგადებით მიღებული საინტერესო თვისებები. + +## როგორ შეგვიძლია დავხატოთ ვარსკვლავი? +ვარსკვლავები, რომლებსაც ვხატავთ, შედგება მრავალი ხაზისა და წვეროსგან, იქნება ეს ჩვეულებრივი 5-ქიმიანი, დავითის ვარსკვლავი(6-ქიმიანი) თუ სხვა. ყველა ასეთ ვარსკვლავში არსებობს გარკვეული კანონზომიერები: +1. ყოველ მეზობელ(უახლოეს) წვეროებს შორის მოთავსებული კუთხე, რომელიც მდებარეობს ვარსკვლავის ცენტრზე, არის ტოლი +1. ყველა ვარსკვლავის წვერო არის მოთავსებული წრეწირზე, რომლის ცენტრიც არის თვითონ ამ ვარსკვლავის ცენტრი +1. ყოველი ვარსკვლავის მონაკვეთის მიერ გამოტოვებული წვეროების რაოდენობა(ანუ ხაზის საწყისი წვეროდან ბოლო წვერომდე არსებული მეზობელი წვეროების რაოდენობა) არის ტოლი + +მაგ: + + + +სურათზე გამოსახულ 5-ქიმიან ვარსკვლავში მეზობელ მწვანე მონაკვეთებს შორის კუთხეები არის ტოლი(1), ყველა წვერო მოთავსებულია წრეწირზე(2) და რაც შეეხება გამოტოვებულ წვეროებს, აქ წითელი(ვარსკვლავის) მონაკვეთი ტოვებს ზუსტად 1 წერტილს(შეიძლება ითქვას 2-საც, თუ მეორე მხრიდან წავალთ, მაგრამ ორივე ერთნაირი ფორმის ვარსკვლავს წარმოქმნიდა) + +ჩვენი მიზანი ახლა არის ამ ყველაფრის ჯავაში დაწერა და ვიზუალურად გამოტანა. ნაბიჯებად რომ დავყო: +1. გავწეროთ ყველა საჭირო ცვლადი ვარსკვლავის ყველა თვისების აღსაწერად +1. შევქმნათ მეთოდი, რომელიც შექმნის ამ ვარსკვლავისთვის საჭირო მონაკვეთებს და დაგვიბრუნებს მასზე სამუშაოდ(მის დასატრიალებლად) საჭირო ინფორმაციას +1. დავატრიალოთ ეს ვარსკვლავი + +## საჭირო ცვლადები +```java + GPoint center; + int points; + int jumpAm; + int length; + double speed; +``` +- `center` - ვარსკვლავის ცენტრის კოორდინატები +- `points` - ვარსკვლავის წვეროების კოორდინატები +- `jumpAm` - გამოტოვებული წვეროების რაოდენობას +1(კოდის დასაწერად უფრო მარტივია) +- `length` - ვარსკვლავის რადიუსი +- `speed` - ვარსკვლავის ბრუნვის სიჩქარე(რადიანებში) + +## ვარსკვლავის შექმნა და ინფორმაციის დაბრუნება +```java + /* + * Pre-Condition : None + * + * Post-Condition : Displays the star and returns all the relevant information about it + */ + private Pair, ArrayList> generateStar() { + // Amount of radians between each corner + double jumpDeg = 2 * Math.PI / points; + + ArrayList lineRes = new ArrayList(); + ArrayList degRes = new ArrayList(); + for (int i = 0; i < points; i++) { + // Get cords of the start and end of a line + GPoint start = getPointOnCircle(i * jumpDeg); + // End corner is always jumpAm amount of corners after the starting corner + GPoint end = getPointOnCircle((i + jumpAm) * jumpDeg); + + GLine curLine = new GLine( + start.getX(), start.getY(), + end.getX(), end.getY()); + + lineRes.add(curLine); + degRes.add(i * jumpDeg); + add(curLine); + } + return new Pair, ArrayList>(lineRes, degRes); + } +``` + +> ამ ფუნქციას გადაეცემა ზევით ნახსენები ცვლადები, მაგრამ სიმარტივის გამო გატანილია გლობალურად + +თავდაპირველად `jumpDeg` ცვლადში ვინახავ თითო მეზობელ წვეროს შორის არსებულ კუთხეს. შემდეგ ვინახავთ 2 სიას, რომელიც აღწერს ამ ვარსკვლავს და გაგვიადვილებს მის ტრიალს. `lineRes` ინახავს თვითონ ვარსკვლავის შემადგენელ მონაკვეთებს, ხოლო `degRes` ყოველი ამ მონაკვეთის საწყისი წერტილის შესაბამის კუთხეს + +> შესაძლებელია `degRes` ცვლადის გარეშეც ვარსკვლავის დატრიალება, მაგრამ ამ სიის არსებობა გვეხმარება იმაში, რომ ლოგიკა ძალიან არ გაგვირთულდეს დატრიალებისას + +შემდეგ ვქმნით ვარსკვლავის მონაკვეთებს, რომლის რაოდენობაც ემთხვევა წვეროების რაოდენობას. ყოველი მონაკვეთის საწყისი წერტილი უნდა იყოს ამ წრეზე i-ური წერტილი, რომელსაც აქ ავღნიშნავ ცვლადით `start`, ხოლო ბოლო წერტილი არის `jumpAm` წერტილის მერე, ანუ (i+jumpAm)-ური წერტილი, რომელსაც ავღნიშნავ ცვლადით `end`. ამ წერტილების კოორდინატების გამოსათვლელად კიდევ ვიყენებ დამხმარე მეთოდს `getPointOnCircle` + +```java + /* + * Pre-Condition : None + * + * Post-Condition : Returns the coordinates of a point on the star circle at deg radians + */ + private GPoint getPointOnCircle(double deg) { + return new GPoint( + center.getX() + length * Math.cos(deg), + center.getY() + length * Math.sin(deg)); + } +``` + +ეს კოდი ნაკლებადაა დამოკიდებული პროგრამირებაზე და მეტად მათემატიკურ ცოდნაზე. აქ ხდება შემდეგი: მეთოდს გადაეცემა კუთხე(რადიანებში) და აბრუნებს `center` წერტილზე `length` რადიუსის მქონე წრეწირზე მაგ კუთხის შესაბამისი წერტილს. `getPointOnCircle(i * jumpDeg)` მეთოდის გამოძახებისას არგუმენტი i იმიტომ მრავლდება `jumpDeg` ცვლადზე, რომ i არის მხოლოდ წერტილის ნომერი, რომელიც ჩვენ მივანიჭეთ. ამ გამრავლებით ვიგებთ თუ ეს ნომერი რომელ კუთხეს მიესადაგება. მაგალითად, i=0 იქნება 0 რადიანი, i=1 იქნება jumpDeg რადიანი და ა.შ. ეს ყველა წერტილი კიდევ მეზობელი წერტილებისგან ტოლი კუთხეებით იქნება დაშორებული, როგორც საჭიროა ვარსკვლავისთვის + +შემდეგი კიდევ მარტივია. ვქმნი მონაკვეთს და ვამატებ სიაში `lineRes`, ხოლო თვითონ საწყისი წერტილის კუთხეს - `degRes`. ბოლოს კიდევ ამ 2 სიას ვაბრუნებთ. + +> 2 ცვლადის დასაბრუნებლად ვიყენებ ცვლადის ტიპს `Pair`, რომელიც ინახავს 2 ცვლადს. ამ 2 ცვლადის ტიპი არ არის აუცილებელი, რომ ერთმანეთს დაემთხვეს, როგორც მაგალითში ვხედავთ + +## ვარსკვლავის ტრიალი +```java + /* + * Pre-Condition : Star has to be already generated + * + * Post-Condition : Rotates the star by speed radians + */ + private void rotateStar(ArrayList starLines, ArrayList starDegs) { + double jumpDeg = 2 * Math.PI / points; + for (int i = 0; i < points; i++) { + // Calculate the next rotation degrees + double nextDeg = (starDegs.get(i) + speed) % (2 * Math.PI); + + // Move line points + GPoint nextStart = getPointOnCircle(nextDeg); + GPoint nextEnd = getPointOnCircle(nextDeg + jumpAm * jumpDeg); + + starLines.get(i).setStartPoint(nextStart.getX(), nextStart.getY()); + starLines.get(i).setEndPoint(nextEnd.getX(), nextEnd.getY()); + starDegs.set(i, nextDeg); + } + } +``` + +შენახული ინფორმაციის გამო, დატრიალება ამ ვარსკვლავის ახლა არის მარტივი ოპერაცია. `rotateStar` მეთოდს მხოლოდ სჭირდება იცოდეს ის 2 სია, რომელიც ვარსკვლავის შექმნისას დავაბრუნეთ. იმისთვის, რომ ვარსკვლავი დატრიალდეს, ყველაზე ლოგიკური გზა იქნება წერტილების თანაბარი გადაადგილება ამ წრეწირზე, რისთვისაც საჭიროა ვიცოდეთ ყოველ იტერაციაში თუ რამდენი რადიანით გადაადგილდება წერტილი. ამ რაოდენობას ვინახავთ `speed` ცვლადში. + +თავდაპირველად ვიგებთ შემდეგ კუთხეს, რაც მობრუნების შემდეგ გვექნება. ეს მარტივია, საჭიროა მონაკვეთის კუთხეს დავუმატოთ მობრუნების სიჩქარე(განაშთვა არაა აუცილებელი). ამას ვაკეთებთ ყოველი მონაკვეთისთვის და თითოს მობრუნებისას შემდეგი საწყისი წერტილის კუთხეს ვიმახსოვრებთ `nextDeg` ცვლადში. ამის შემდეგ იგივეს ვიმეორებთ, რაც ზევით: ვიგებთ საწყისსა და საბოლოო წერტილებს მონაკვეთის და `generateStar` მეთოდში როცა ვქმნიდით ამ მონაკვეთებს, აქ მხოლოდ მნიშვნელობებს ვუცვლით. ბოლოს კიდევ სიაში ვცვლით ამ i-ური მონაკვეთის საწყისი წერტილის კუთხეს. + +> ერთი დამაბნეველი ნაწილი შეიძლება იყოს `nextEnd` ცვლადში არგუმენტს რატომ ვუმატებთ jumpAm * jumpDeg, მაგრამ ვიცით, რომ ეს არის საბოლოო წერტილი, ანუ ის საწყისი წერტილისგან უნდა იყოს `jumpAm` წერტილით დაშრებული, ხოლო თითო წერტილს შორის არის `jumpDeg` სიდიდის კუთხე \ No newline at end of file diff --git a/problem-set/images/rotating-star-5-point-ex.jpeg b/problem-set/images/rotating-star-5-point-ex.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..3e67808c4803ed9ab0247d71a1958df32f286636 GIT binary patch literal 39538 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