moin leute,
ich versuch gerad einen algorithmus zu programmieren der mir sagt wie viele parrallele überlappende vektoren ich in einem raum hab. (das ist die kurzfassung...)
also detalliert:
ich möchte eine event application entwickeln. um die events an den einzelnen tagen (visuell) korrekt darzustellen muss ich nun berechnen
wie viele "termine/events" sich an einem tag überschneiden.
kleines beispiel:
de.tinypic.com/r/2yv8fx0/4
[Blockierte Grafik: http://de.tinypic.com/r/2yv8fx0/4]
das ganze ist ein bisschen komplex und ich bin leider nicht der beste problemlöser... ich hab das ganze auch bis zu einem gewissen grad hinbekommen, aber
ich bin da nicht mit zufrieden. und es tauchen fehler auf...
das ganze hab ich mal in javascript geschrieben. aber mir gehts hier mehr um die logik. also wenn dazu jemand was in einer anderen sprache sagen kann wäre das auch cool...
das ganze ist ein ansatz der einigermaßen funzt. bin aber offen für ne komplett andere richtnug :)
Alles anzeigen
ich versuch gerad einen algorithmus zu programmieren der mir sagt wie viele parrallele überlappende vektoren ich in einem raum hab. (das ist die kurzfassung...)
also detalliert:
ich möchte eine event application entwickeln. um die events an den einzelnen tagen (visuell) korrekt darzustellen muss ich nun berechnen
wie viele "termine/events" sich an einem tag überschneiden.
kleines beispiel:
de.tinypic.com/r/2yv8fx0/4
[Blockierte Grafik: http://de.tinypic.com/r/2yv8fx0/4]
das ganze ist ein bisschen komplex und ich bin leider nicht der beste problemlöser... ich hab das ganze auch bis zu einem gewissen grad hinbekommen, aber
ich bin da nicht mit zufrieden. und es tauchen fehler auf...
das ganze hab ich mal in javascript geschrieben. aber mir gehts hier mehr um die logik. also wenn dazu jemand was in einer anderen sprache sagen kann wäre das auch cool...
das ganze ist ein ansatz der einigermaßen funzt. bin aber offen für ne komplett andere richtnug :)
Quellcode
- /**
- * Redraw each column
- * @method redrawevents
- * @param {array} calumn_sort sorted events on one day. events sorted on start date
- * @param {Int} index cwday of the calendar (mo=1, di=2, ...)
- * @private
- */
- function redrawevents(calumn_sort, index){
- var finished = [];
- var eventsBefore = [ ];
- var events = [ ];
- var next_pos = 0;
- var result = [];
- var index = index;
- var group = 0;
- while(calumn_sort.length > 0) {
- // extract the first element of the array.
- var current = calumn_sort.shift();
- var pos = -1;
- eventsBefore.each(function(event, index){
- // check if the event dont overlp with current event.
- // if they do replace the event with the current event and BREAK
- if( event.dim <= current.top_pos ) {
- pos = index;
- eventsBefore[index] = current;
- throw $break;
- }
- });
- // the first event which did Not overlapped with the current element
- if(pos === -1){
- pos = next_pos;
- next_pos += 1;
- eventsBefore.push(current);
- }
- current.drawing_pos = pos;
- current.drawing_size = next_pos;
- finished.push(current);
- }
- finished.each(function(event, i){
- event.group = group;
- event.drawing_size = next_pos;
- result.push(event);
- });