[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Schulmathematik vs. Flächen | Prozente und Anpassung

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Schulmathematik vs. Flächen | Prozente und Anpassung

andih
Beiträge gesamt: 16

18. Nov 2010, 16:34
Beitrag # 1 von 3
Bewertung:
(1851 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

folgendes Problem.

Ich habe eine ID-Seite mit Breite x Höhe = Fläche.
Zudem habe ich verschiedene Objekte auf der Seite die unterschiedliche Größen und Verhältnisse haben.

Jedes der Objekte soll aber mind. 7% der Gesamtfläche der Seite besitzen.
Ist das Objekt kleiner als 7% so soll es automatisch über die geometric Bounds auf min. 7% der Fläche der Seite vergrößert werden.

Das ganze habe ich über ein Script gelöst: Klick auf die Objekte und los.

Das klappt auch alles - nur meine Formel für die "Vergrößerung" der Objekte bleibt immer unter den 7% so daß ich das Scripte min. 10 mal durchlaufen muss um größer 7% zu kommen.

mein Ansatz bisher:


mySeitenFlaecheProzent = Breite x Höhe der Seite
myObjektFlaeche = Breite x Höhe des Objektes (ausgelesen über geometric Bounds)
myObjektVerhalt = Objekt ((Breite / Höhe) / 100) bzw. wenn Höhe > Breite dann ((Höhe / Breite) / 100) des Objektes
myWachstum = wird dann zu geometric Bounds right und bottom addiert

Code
set myDifferenz to (mySeitenFlaecheProzent - myObjektFlaeche) 
set myWachstum to ((myDifferenz / 2) * myObjektVerhalt)

set geometric bounds of myObjektProof to {mytop, myleft, (mybottom + myWachstum), (myright + myWachstum)}


Die Formel liefert einen schrittweisen Näherungswert für myWachstum der am Ende bei 0 mit 5 Nachkommastellen ankommt. Bei manchen Objekten springt die Fläche über 7% bei anderen bekomme ich eine quasi Endlosschleife.

Wie kann ich die Formel trimmen damit sie nach einmaligem Durchlauf das richtige Ergebnis liefert?


Danke und schönen Tag noch
andih
X

Schulmathematik vs. Flächen | Prozente und Anpassung

sleepless
Beiträge gesamt: 152

19. Nov 2010, 08:40
Beitrag # 2 von 3
Beitrag ID: #457471
Bewertung:
(1762 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich bin leider weder ein erfahrener Skripter noch ein Mathematiker, aber einen ähnlichen Fall hatten wir auch schon. Vielleicht kann ich Dir wenigstens einen Ansatz geben:

Du hast ja - wenn ich Dich richtig verstanden habe - schon die "Zielfläche" (Breite x Höhe /100x7). Die Formel ist doch dann
Objektbreite x Faktor x Objekthöhe x Faktor = Zielfläche. Aufgelöst ist das: Faktor = Wurzel ( Zielfläche / Objektbreite x Objekthöhe).

Ich weiß leider nicht, ob Dir das jetzt weiterhilft.

Viele Grüße
Stephan


als Antwort auf: [#457414]

Schulmathematik vs. Flächen | Prozente und Anpassung

andih
Beiträge gesamt: 16

19. Nov 2010, 11:18
Beitrag # 3 von 3
Beitrag ID: #457502
Bewertung:
(1738 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo sleepless,

Danke. Die Formel ist genau das, was ich gesucht habe.

die Lösung sieht nun folgendermaßen aus.

Code
repeat with myObjekte from 1 to (count Auswahl) 
set myObjektProof to item myObjekte of Auswahl

-- Rahmen der einzelnen Objekte auslesen
tell myObjektProof
set myBounds to geometric bounds as list
set mytop to item 1 of geometric bounds
set myleft to item 2 of geometric bounds
set mybottom to item 3 of geometric bounds
set myright to item 4 of geometric bounds

-- Breite und Höhe des Objektes berechnen
set myBreiteObjekt to (myright - myleft)
set myHoeheObjekt to (mybottom - mytop)

-- Fläche des Objektes berechnen
set myObjektFlaeche to (myBreiteObjekt * myHoeheObjekt)


-- Fläche Objekt und Seite vergleichen
if myObjektFlaeche < mySeitenFlaecheProzent then

-- Faktor berechnen
set myWachstum to (mySeitenFlaecheProzent / (myBreiteObjekt * myHoeheObjekt))
-- Wurzelberechnung
set myWachstum to myWachstum ^ (1 / 2)
-- neue Breite
set myPlus1 to myWachstum * myBreiteObjekt
-- neue Höhe
set myPlus2 to myWachstum * myHoeheObjekt

-- Rahmen anpassen
set geometric bounds of myObjektProof to {mytop, myleft, (mytop + myPlus2), (myleft + myPlus1)}

else
-- für später
end if

end tell


end repeat



gruß andih


als Antwort auf: [#457471]