Zurück   Flashforum > Ohne Thema > Am Rande

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-02-2011, 17:02   #1 (permalink)
pirate
 
Benutzerbild von robert
 
Registriert seit: Nov 2005
Beiträge: 983
Mathematik Problem: n-Rechtecke in ein Rechteck

Schon wieder bin ich da mit einer Frage,

ich versuche einen kleinen Code zu schreiben, der mir n-Rechtecke
in einem großen Rechteck platziert. Mein erster Gedanke war, die Fläche
des großen Rechtecks zu berechnen, diese durch die Anzahl der kleinen
zu teilen und dann mit der Wurzel die Seitenflächen der kleinen Rechtecke
auszurechen.
Funktioniert so aber leider nicht, da es ja dann nicht zwangsläufig ins Format
des Rechtecks passt. Das würde nur funktionieren, wenn das Große Rechteck
ein Quadrat wäre, ist es aber nicht zwangsläufig.

Die kleinen Quadrate hingegen haben ein festes Seitenverhältnis.

Ich habe dazu auch eine kleine Grafik gemacht, die vll. das Verständnis
erleichtert.


hoffe, jemand weiß da weiter
Angehängte Grafiken
Dateityp: png nsquares-01.png (13,4 KB, 17x aufgerufen)
__________________
:: apfeltrip.

:: http://mumedia.net/blog
:: http://mumedia.net
robert ist offline   Mit Zitat antworten
Alt 23-02-2011, 17:27   #2 (permalink)
pirate
 
Benutzerbild von robert
 
Registriert seit: Nov 2005
Beiträge: 983
Noch ein paar zusätzliche Infos, damits vll. leichter verständlich ist:

* Das Browser Fenster ist x * y Pixel groß.
* Die kleinen Rechtecke haben keine vorgegebene Größe, aber
ein vorgegebenes Seitenverhältnis
* Die Anzahl der kleinen Rechtecke ist vorgegeben
* Breite des Fensters sollte auf jeden Fall komplett ausgenutzt werden
d.h. die angeordneten kleinen Rechtecke sollten nebeneinander von ganz
links nach ganz rechts gehen
* Wenn möglich sollte das gleiche für die Höhe gelten
__________________
:: apfeltrip.

:: http://mumedia.net/blog
:: http://mumedia.net
robert ist offline   Mit Zitat antworten
Alt 23-02-2011, 17:30   #3 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Nachfrage: Möchtest Du wissen...
  1. wieviele Recht Ecke (einer bestimmten Größe) in ein anderes Rechteck (einer bestimmten Größe) passen?
  2. wie groß ein beliebiges Rechteck sein müsste, um eine gegeben Anzahl kleinerer Rechtecke (einer bestimmten Größe) enthalten zu können?
  3. wie groß ein Rechteck (einer bestimmten Proportionen) sein müsste, um eine gegeben Anzahl kleinerer Rechtecke (einer bestimmten Größe) enthalten zu können?

Edit: Ok - hab's verstanden. Ich denk mal drüber nach, aber ganz profan ist das nicht.
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (23-02-2011 um 17:35 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 23-02-2011, 17:37   #4 (permalink)
pirate
 
Benutzerbild von robert
 
Registriert seit: Nov 2005
Beiträge: 983
Oh. Entschuldige, dass man das nicht gleich herauslesen konnte.

Beispiel:

Mein Browserfenster ist gerade 1000x700px groß. Ich habe jetzt 18 Divs,
die ich unterbringen will. Wie breit/hoch müssen die 18 Divs sein, dass
eine Zeile der 18 Divs (sozusagen im Grid angeordnet) in jedem Fall 1000px
breit ist, und wenn möglich die Spalte der 18 Divs (im Grid angeordnet)
700px hoch ist.

Also möchte ich im Endeffekt ausrechnen, wieviele dieser Divs in eine
Zeile müssen und wie breit diese einzelnen Divs sind. Sie haben ein fixes
Seitenverhältnis von z.b. 16:10.
__________________
:: apfeltrip.

:: http://mumedia.net/blog
:: http://mumedia.net
robert ist offline   Mit Zitat antworten
Alt 23-02-2011, 18:16   #5 (permalink)
pirate
 
Benutzerbild von robert
 
Registriert seit: Nov 2005
Beiträge: 983
[solved]

Habs gelöst. Was mir dabei klar wurde ist, dass es nicht möglich ist, dass
es in Breite und Höhe ins Fenster passt. Sondern nur ungefähr in der Höhe
und in der Breite auf jeden fall.

Die Lösung war für mich das Annähern.
Am Anfang mach ich die kleinen Rechtecke so breit wie das Große und
berechne deren Höhe dann entsprechend des Seitenverhältnisses.
Dann schaue ich ob die Höhe mal der Projektanzahl größer ist, als die
Höhe des Großen Rechtecks. Wenn ja, dann muss eine Spalte hinzu, d.h.
die kleinen Rechtecke sind nurnoch halb so groß, wie das große Rechteck.

Und so weiter.


Code wäre:

Code:
windowWidth = $(window).width();
	windowHeight = $(window).height();

	var projectWidth = windowWidth;
	var projectHeight = (windowWidth/16)*10;
	var pRows = 1;

	//make a straight number out of the div count
	while(nps % 2 != 0) {
		nps += 1;
	}
	while(  (((windowWidth/pRows)/16) * 10) * nps/pRows > windowHeight) {
		pRows += 1;
	}
	projectWidth = windowWidth / pRows;
	projectHeight = (projectWidth/16)*10;
Danke für die Hilfe
__________________
:: apfeltrip.

:: http://mumedia.net/blog
:: http://mumedia.net
robert ist offline   Mit Zitat antworten
Alt 23-02-2011, 18:47   #6 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Hab mir auch mal den Kopf zerbrochen und festgestellt, das sich das Ganze auch berechnen läßt. Gerade bei größeren Anzahlen dürfte das erheblich performanter sein:
PHP-Code:
private function findSmallScalebig:Rectanglesmall:Rectanglenum:uint ):Number {

    var 
f:Number = (big.width small.height) / (small.width big.height);
    var 
hNum:Number Math.sqrtnum/); // vertial Number of Elements
    
var wNum:Number hNum// horizontal Number of Elements
    
    
return (Math.ceil(wNum) / wNum) > (Math.ceil(hNum) / hNum) ?
        
big.width / (Math.ceil(wNum) * small.width): // If horizontal fill is better
        
big.height / (Math.ceil(hNum) * small.height); // if vertical fill is better

}

// Test-Code

var small:Rectangle = new Rectangle(0010060);
var 
big:Rectangle = new Rectangle(001024768);

var 
s:Number findSmallScale(bigsmall26);

var 
wNum:Number Math.floor(big.width / (small.width s));
var 
hNum:Number Math.floor(big.height / (small.height s));

trace("s: "+s" | wNum:"+wNum+" | hNum:"+hNum+" = "+(wNum*hNum) ); 
Wusste nicht, dass Du JS brauchst und habe es der einfachheithalber in AS3 angelegt. Sollte ja kein Problem sein, das umzuschreiben?!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (23-02-2011 um 19:08 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Flash CS3] Rechteck macht kein Rechteck mehr Striker Flash Einsteiger 4 12-07-2010 12:14
problem mit mathematik und seine dynamik? flozwo Flash 8 6 22-07-2007 14:40
gedrehtes rechteck aus anderem rechteck hinausbewegen fritzthecat Spielkonzepte und Spieleprogrammierung 4 21-08-2006 08:22
idiotisches mathematik problem mit 3d-ebene flashtestdummy ActionScript 1 3 04-05-2004 14:54
kleines rechteck - großes rechteck Seem Flash MX 9 30-07-2003 15:50


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele