Text
// Az aranymetszĂ©s aránya final float PHI = 1.618; int saveCount = 0; // MentĂ©sek számlálĂłja String savePath = "C:\Users\hp\Desktop\sketch_220317a\ixek\"; // MentĂ©si mappa ArrayList positions = new ArrayList<>(); // Tárolja az X-ek helyĂ©t void setup() { size(400, 570); // Ablak mĂ©rete background(255); // FehĂ©r háttĂ©r textSize(32); // Az "X" mĂ©rete textAlign(CENTER, CENTER); // KözĂ©pre igazĂtás fill(10); // X szĂn noLoop(); // Csak egyszer fut le, kivĂ©ve ha ĂşjraindĂtjuk generateImage(); } void draw() { // A kĂ©p generálása a setup() vagy a space lenyomásakor törtĂ©nik } void generateImage() { background(255); // Ăšj háttĂ©r, hogy ne rajzoljon egymásra positions.clear(); // TöröljĂĽk az elĹ‘zĹ‘ pozĂciĂłkat for (int i = 0; i < 6; i++) { PVector pos; do { float x = generateGoldenRatio(width); float y = generateGoldenRatio(height); pos = new PVector(x, y); } while (isOverlapping(pos)); // Ha fedĂ©sben van másik X-szel, Ăşj helyet keres positions.add(pos); // Hozzáadjuk a listához text("X", pos.x, pos.y); // Kirajzoljuk az X-et // A távolság kiĂrása Ăşgy, hogy ne lĂłgjon ki a kĂ©pbĹ‘l String distanceText = "(" + int(pos.x) + " px, " + int(pos.y) + " px)"; PVector textPos = adjustTextPosition(pos); textSize(16); // Kisebb betűmĂ©ret a távolság kiĂrásához text(distanceText, textPos.x, textPos.y); positions.add(textPos); // A szöveg pozĂciĂłját is mentjĂĽk, hogy ne legyen fedĂ©s textSize(32); // VisszaállĂtjuk az X mĂ©retĂ©t } } void keyPressed() { if (key == ' ') { // Space lenyomására Ăşjragenerálja a kĂ©pet generateImage(); } else if (key == ENTER || key == RETURN) { // Enter lenyomására menti a kĂ©pet saveImage(); } } // Generál egy pozĂciĂłt az aranymetszĂ©s szabályai szerint float generateGoldenRatio(float max) { float goldenSection = max / PHI; return random(1) > 0.5 ? random(goldenSection, max) : random(0, goldenSection); } // EllenĹ‘rzi, hogy egy adott pozĂciĂł tĂşl közel van-e másik X-hez vagy szöveghez boolean isOverlapping(PVector newPos) { float minDist = 40; // Minimum távolság az X-ek Ă©s szövegek között for (PVector pos : positions) { if (newPos.dist(pos) < minDist) { return true; // FedĂ©s van } } return false; } // BeállĂtja a távolság szöveg helyĂ©t Ăşgy, hogy ne lĂłgjon ki a kĂ©pbĹ‘l PVector adjustTextPosition(PVector pos) { float textOffsetY = 30; // AlapbĂłl az X alá Ărjuk float textX = pos.x; float textY = pos.y + textOffsetY; // Ha tĂşl közel van az alsĂł szĂ©lĂ©hez, akkor fölĂ© Ărjuk if (textY > height - 10) { textY = pos.y - textOffsetY; } // Ha tĂşl közel van a bal oldalhoz, jobbra toljuk if (textX < 40) { textX += 20; } // Ha tĂşl közel van a jobb oldalhoz, balra toljuk if (textX > width - 40) { textX -= 20; } return new PVector(textX, textY); } // KĂ©p mentĂ©se megadott könyvtárba void saveImage() { String filename = savePath + "generated_image_" + saveCount + ".jpg"; save(filename); println("KĂ©p elmentve ide: " + filename); saveCount++; }
0 notes
Text
0 notes