»ç¼±À̵¿ ·¹À̾î

»ç¼±À̵¿ ·¹À̾î

·¹ÀÌ¾î »ç¼±À¸·Î À̵¿½Ã۱âGo to ·¹À̾îÀ̵¿
»ç¼±À¸·Î À̵¿Çϱâ 2
»ç¼±À¸·Î À̵¿Çϱâ 3 (1013)



Á¿ì»óÇÏ·Î ·¹À̾î À̵¿½ÃŰ±â¿¡¼­´Â ·¹À̾îÀÇ ÁÂÇ¥°¡ left, topÀÇ Áõ°¡°ªÀÌ °°À» ¶§¿¡¸¸ µ¿½Ã¿¡ ·¹À̾ À̵¿ÇÕ´Ï´Ù. left³ª topÀÇ µÎ °ªÀÌ ¼­·Î Â÷À̰¡ ³­´Ù¸é ÀÛÀº °÷¿¡±îÁö °¡°í³ª¼­ Å«°ªÀ» °¡Áö´Â °÷À¸·Î À̵¿À» ÇÕ´Ï´Ù. º¸±â°¡ º°·Î ÁÁÁö ¾Ê½À´Ï´Ù. ÀÌ ÆäÀÌÁö´Â À̵¿ÇÒ °÷ÀÇ ÁÂÇ¥°¡ ¾îµð¶óµµ left¿Í topÀÇ °ª¿¡ ºñ·ÊÇØ¼­ »ç¼±À¸·Î À̵¿À» ½Ãŵ´Ï´Ù.

left¿Í topÀÇ °ªÀÌ °°Áö¾ÊÀ» ¶§ Çѹø À̵¿ÇÒ left¿Í top°ªÀ» ±¸ÇÒ·Á¸é ÇÑ °¡Áö¸¦ ÁÖÀÇÇØ¾ßÇÕ´Ï´Ù. nn4¿Í ie4¿¡¼­ ·¹À̾ À̵¿½Ãų ¼ö ÀÖ´Â ÃÖ¼Ò°ªÀº nn4´Â 0.5À̰í ie4´Â 1ÀÔ´Ï´Ù. nn4´Â 0.5ÀÌ»óÀÇ °ªÀº ¹Ý¿Ã¸²À» ÇÏ¿© 1px¸¦ À̵¿ÇÕ´Ï´Ù. 2.4´Â 2px¸¦ À̵¿ÇÕ´Ï´Ù. ie4´Â 0.9 ÀÌÇÏ´Â À̵¿ÇÏÁö ¾Ê½À´Ï´Ù.

·¹À̾ ¿À¸¥ÂÊÀ¸·Î 300, ¾Æ·¡·Î 100px À̵¿½Ãų·Á¸é left¿¡°Ô 300, top¿¡°Ô 100À» ´õÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. À̰ÍÀ» ºÎµå·´°Ô À̵¿½Ã۱â À§Çؼ­ left¿Í topÀÇ Çѹø À̵¿°ªÀ» 3´ë1·Î left¿Í topÀÇ °ªÀ» Áõ°¡ ½ÃÄÑÁÖ¾î¾ß ÇÕ´Ï´Ù. leftÀÇ Çѹø À̵¿°ªÀ» 1·Î ÁÖ¸é °¡Àå ºÎµå·´°Ô À̵¿½Ã۱â À§Çؼ­ topÀÇ Áõ°¡°ªÀº 0.333333333.... ÀÌ °¡Àå Á¤È®ÇÑ ºñÀ²ÀÇ °ªÀÌ µË´Ï´Ù. ÇÏÁö¸¸, nn4´Â 0.4 ÀÌÇÏÀÇ °ªÀº ¹Ý¿Ã¸²¿¡¼­ ¹Ý¿µµÇÁö ¾Ê°í ie4´Â 0.9ÀÌÇÏÀÇ °ªÀº ¹Ý¿µÇÏÁö ¾Ê½À´Ï´Ù. leftÀÇ Áõ°¡°ª 1, topÀÇ Áõ°¡°ª 0.3333À¸·Î ·¹À̾ À̵¿½ÃŰ¸é ¿ÞÂÊÀ¸·Î´Â Áõ°¡ÇÏ¿© À̵¿ÇÏÁö¸¸, ¾Æ·¡ÂÊÀ¸·Î´Â topÀÇ °ªÀÌ ¹Ý¿µÀÌ µÇÁö¾Ê¾Æ À̵¿ÇÏÁö ¾Ê½À´Ï´Ù. ·¹À̾î À̵¿ÀÌ ³¡³ª¸é ÁÂÇ¥´Â left=¿ø·¡ left ÁÂÇ¥°ª+300, top=¿ø·¡ topÁÂÇ¥°ª + 0ÀÌ µË´Ï´Ù.

ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ­´Â ÃÖ¼Ò À̵¿°ªÀ» 1·ÎÁÖ°í À̵¿ÆøÀÌ Å« ÁÂÇ¥°ªÀ¸·Î 2, 3, 4ÀÇ ¼Ò¼ýÁ¡À» °¡ÁöÁö ¾Ê´Â ÁÂÇ¥°ªÀ» ÁöÁ¤ÇÏ¸é µÇÁö¸¸, À̰ÍÀº ·¹À̾îÀ̵¿À» ÇÒ¶§ ÀÏÀÏÀÌ À̵¿°ªÀ» ÁöÁ¤ÇؾßÇϰí left¿Í topÀÇ ºñÀ²ÀÌ 2´ë1ÀÌÇϳª 1.5´ë1 2.5´ë1 µî ¼Ò¼ýÁ¡À» °¡Áö´Â ºñÀ²ÀÇ À̵¿ÁÂÇ¥¿¡´Â Á¤È®ÇÑ ÁÂÇ¥·Î À̵¿À» ÇÒ ¼ö ¾ø½À´Ï´Ù. Áï À̵¿À» ½Ãų ¼ö ÀÖ´Â Å©±âÀÇ ÁÂÇ¥°¡ Á¦ÇÑÀÌ µÇ°í À̵¿°ªÀÌ 1·Î Á¦ÇÑÀÌ µÇ¾î¼­ ·¹À̾ 1ÀÌÇÏÀÇ ¹Ì¼¼ÇÑ À̵¿Àº ÇÒ ¼ö ¾ø½À´Ï´Ù.

±×·¡¼­ À̵¿°ªÀÌ Å« left³ª topÀÇ ÁÂÇ¥¿¡ ÃÖ¼ÒÀÇ À̵¿°ª 1À» ÁöÁ¤Çϰí ÀÛÀº ÁÂÇ¥ÀÇ °ª¿¡ Å« ÁÂÇ¥ÀÇ °ªÀ» ³ª´©¾î ÁÖ¸é ÀÛÀº ÁÂÇ¥ÀÇ À̵¿°ªÀÌ 1 º¸´Ù ÀÛÀº ¼Ò¼ýÁ¡ÀÇ ÁÂÇ¥°¡ ³ª¿É´Ï´Ù. 1°ú ¼Ò¼ýÁ¡ÀÇ À̵¿°ªÀ» À̵¿½ÃÄÑ¾ß ÇÕ´Ï´Ù.

leftÀÇ Áõ°¡°ª 1 topÀÇ Áõ°¡°ªÀÌ 0.333...ÀÎ left:300, top:100ÀÇ 3´ë1 À̵¿°ªÀ» °¡Áö´Â ·¹À̾ À̵¿½Ã۱â À§Çؼ­ topÀÇ Áõ°¡°ª¿¡ ¼Ò¼ýÁ¡ ÀÌÇÏÀÇ 3333...À» Çѹø À̵¿½Ã¿¡ ÀúÀåÀ» Çϰí 1ÀÌ ³ÑÀ¸¸é ±×¶§ ±× °ªÀ» ÁöÁ¤ÇÏ°í ´Ù½Ã ÀúÀåµÈ °ª¿¡¼­ 1ÀÌ ³Ñ´Â ¼Ò¼ýÁ¡ À§ÀÇ Á¤¼ö°ªÀ» »©ÁÝ´Ï´Ù. ±×·¯¸é °ÅÀÇ 3´ë1ÀÇ ºñÀ²·Î ·¹À̾ À̵¿À» ÇÕ´Ï´Ù. Çѹø À̵¿¶§¸¶´Ù »ý±â´Â ¼Ò¼ýÁ¡ ÀÌÇÏÀÇ °ªÀ» ¹ö¸®Áö ¾Ê´Â °ÍÀÔ´Ï´Ù.

function init() {
	if(n4) {
		oblLayer = new Array()
		oblLayer[0] = 1 //À̵¿½Ã°£
		oblLayer[1] = new obliqueSet(document.D1, 400, 0, 4) 
	}
	else if(e4) {
		oblLayer = new Array()
		oblLayer[0] = 1
		oblLayer[1] = new obliqueSet(document.all.D1, 400, 0, 4) 
	}
	moveOblique();
}
--
<div id=D1 style="position:absolute; left:100; top:100; width:100">...</div>
·Î leftÀÇ ÁÂÇ¥°ª 0px, topÀÇ ÁÂÇ¥°ª 100pxÀÎ D1 ·¹À̾ left 400px top 0px·Î Áõ°¡°ªÀÎ 400, 100¸¸Å­ 400´ë 100ÀÇ ºñÀ²·Î Çѹø À̵¿½ÃÀÇ ¼ÓµµÀÇ 4¹è¼Óµµ·Î À̵¿½Ã۶ó°í ÁöÁ¤ÇÕ´Ï´Ù.
function obliqueSet(layer, leftTo, topTo, shift) { 
	this.layer=layer
	this.leftBit=getBit(layer, leftTo, topTo, "left")
	this.topBit=getBit(layer, leftTo, topTo, "top")
	this.leftPom=getBit(layer, leftTo, topTo, "leftPom") 
	this.topPom=getBit(layer, leftTo, topTo, "topPom") 

	this.moveLeftTo = leftTo
	this.moveTopTo = topTo

	this.moveLeftBit = this.leftBit * shift 
	this.moveTopBit = this.topBit * shift

	this.overOneLeft=0 
	this.overOneTop=0
}
·Î »ç¼±À¸·Î ·¹À̾ À̵¿½ÃŰ´Â °ÍÀÇ Á¤º¸¸¦ °¡Áö°í ÀÖ´Â oblLayer¿¡°Ô ÁöÁ¤À» ÇÕ´Ï´Ù. this.leftBit, this.topBit°¡ À̵¿ ÁÂÇ¥°ª¿¡ µû¸¥ À̵¿ ºñÀ²À» °¡Áý´Ï´Ù. À̰ÍÀ» ÇÏ´Â ÇÔ¼ö´Â getBit()ÀÔ´Ï´Ù.
function getBit(layer, leftTo, topTo, leftOrTop) { 
		//·¹À̾îÀÇ À̵¿¾çÀ» 1ÀÌÇÏÀÇ ¼ýÀÚ·Î ³ª´©¾î ¹ÝȯÇÔ. 
	var bitL=bitT=null
	var flagLeft=flagTop=1

	if(n4) {
		bitL = leftTo-layer.left
		bitT = topTo-layer.top
	}
	else if(e4) {
		bitL = leftTo-layer.style.pixelLeft
		bitT = topTo-layer.style.pixelTop
	}

	if(bitL<0) flagLeft = -1
	if(bitT<0) flagTop = -1

	bitL = Math.abs(bitL)
	bitT = Math.abs(bitT)

	if(bitL>bitT) { bitT /= bitL; bitL /= bitL; }
	else { bitL /= bitT; bitT /= bitT; } 

	if(leftOrTop == "left") return bitL*flagLeft
	else if(leftOrTop == "top") return bitT*flagTop
	else if(leftOrTop == "leftPom") return flagLeft
	else if(leftOrTop == "topPom") return flagTop
}
·Î ·¹À̾îÀÇ ÁÂÇ¥¿Í À̵¿ÇÒ ÁöÁ¡±îÁöÀÇ ÁÂÇ¥°ª¿¡ µû¸¥ ºñÀ²°ú À̵¿¹æÇâÀ» ¾ò½À´Ï´Ù. ±×¸®°í ³ª¼­ ·¹ÀÌ¾î »ç¼±À¸·Î À̵¿½ÃŰ´Â moveOblique();¸¦ ½ÇÇàÇÕ´Ï´Ù.
leftAllMoved=topAllMoved=1 //°¢ ·¹À̾ ´Ù À̵¿Çß´ÂÁö ÆÇ´ÜÇÔ.  
function moveOblique() { 
  if(n4) { 
    var i=1, tempL=tempT=0
    for( ; i < oblLayer.length; i++ ) { // && !oblLayer[i].moved
      oblLayer[i].overOneLeft += oblLayer[i].moveLeftBit
      oblLayer[i].overOneTop += oblLayer[i].moveTopBit

      tempL = Math.floor(oblLayer[i].overOneLeft) 
      tempT = Math.floor(oblLayer[i].overOneTop) 

      oblLayer[i].overOneLeft -= tempL
      oblLayer[i].overOneTop -= tempT

      if( oblLayer[i].layer.left < oblLayer[i].moveLeftTo - (tempL*oblLayer[i].leftPom)) { 
	oblLayer[i].layer.left += tempL
      }
      else if( oblLayer[i].layer.left < oblLayer[i].moveLeftTo) { 
	  while( oblLayer[i].layer.left > oblLayer[i].moveLeftTo - tempL ) 
	    tempL--
	  oblLayer[i].layer.left += tempL
      }
      else if( oblLayer[i].layer.left > oblLayer[i].moveLeftTo + (tempL*oblLayer[i].leftPom)) { 
	oblLayer[i].layer.left += tempL
      }
      else if( oblLayer[i].layer.left > oblLayer[i].moveLeftTo) { 
	while( oblLayer[i].layer.left < oblLayer[i].moveLeftTo - tempL ) 
	  tempL++; 
	oblLayer[i].layer.left += tempL 
      }
      else if( !oblLayer[i].leftMoved) { 
	oblLayer[i].leftMoved = true
	leftAllMoved++
      }
      if( oblLayer[i].layer.top < oblLayer[i].moveTopTo - (tempT*oblLayer[i].topPom)) {  
        oblLayer[i].layer.top += tempT 
      }
      else if( oblLayer[i].layer.top < oblLayer[i].moveTopTo) {  
	while( oblLayer[i].layer.top > oblLayer[i].moveTopTo - tempT ) 
	  tempT--
	oblLayer[i].layer.top += tempT 
      }
      else if( oblLayer[i].layer.top > oblLayer[i].moveTopTo + (tempT*oblLayer[i].topPom)) {  
	oblLayer[i].layer.top += tempT 
      }
      else if( oblLayer[i].layer.top > oblLayer[i].moveTopTo) {  
	while( oblLayer[i].layer.top < oblLayer[i].moveTopTo - tempT ) 
	  tempT++; 
	oblLayer[i].layer.top += tempT 
      }
      else if( !oblLayer[i].topMoved) { 
	oblLayer[i].topMoved = true
	topAllMoved++
      }
    }
  }

  else if(e4) { 
    var i=1, tempL=tempT=0
    for( ; i < oblLayer.length; i++ ) { 
      oblLayer[i].overOneLeft += oblLayer[i].moveLeftBit
      oblLayer[i].overOneTop += oblLayer[i].moveTopBit

      tempL = Math.floor(oblLayer[i].overOneLeft) 
      tempT = Math.floor(oblLayer[i].overOneTop) 

      oblLayer[i].overOneLeft -= tempL
      oblLayer[i].overOneTop -= tempT

      if( oblLayer[i].layer.style.pixelLeft < oblLayer[i].moveLeftTo - (tempL*oblLayer[i].leftPom)) { 
	oblLayer[i].layer.style.pixelLeft += tempL
      }
      else if( oblLayer[i].layer.style.pixelLeft < oblLayer[i].moveLeftTo) {  
	while( oblLayer[i].layer.style.pixelLeft > oblLayer[i].moveLeftTo - tempL ) 
	  tempL--
	oblLayer[i].layer.style.pixelLeft += tempL
      }
      else if( oblLayer[i].layer.style.pixelLeft > oblLayer[i].moveLeftTo + (tempL*oblLayer[i].leftPom)) { 
	oblLayer[i].layer.style.pixelLeft += tempL
      }
      else if( oblLayer[i].layer.style.pixelLeft > oblLayer[i].moveLeftTo) {  
	while( oblLayer[i].layer.style.pixelLeft < oblLayer[i].moveLeftTo - tempL ) 
	  tempL++; 
	oblLayer[i].layer.style.pixelLeft += tempL 
      }
      else if( !oblLayer[i].leftMoved) { 
	oblLayer[i].leftMoved = true
	leftAllMoved++
      }

      if( oblLayer[i].layer.style.pixelTop < oblLayer[i].moveTopTo - (tempT*oblLayer[i].topPom)) {  
	oblLayer[i].layer.style.pixelTop += tempT 
      }
      else if( oblLayer[i].layer.style.pixelTop < oblLayer[i].moveTopTo) {  
	while( oblLayer[i].layer.style.pixelTop > oblLayer[i].moveTopTo - tempT ) 
	  tempT--
	oblLayer[i].layer.style.pixelTop += tempT 
      }
      else if( oblLayer[i].layer.style.pixelTop > oblLayer[i].moveTopTo + (tempT*oblLayer[i].topPom)) {  
	oblLayer[i].layer.style.pixelTop += tempT 
      }
      else if( oblLayer[i].layer.style.pixelTop > oblLayer[i].moveTopTo) {  
	while( oblLayer[i].layer.style.pixelTop < oblLayer[i].moveTopTo - tempT ) 
	  tempT++; 
	oblLayer[i].layer.style.pixelTop += tempT 
      }
      else if( !oblLayer[i].topMoved) { 
	oblLayer[i].topMoved = true
	topAllMoved++
      }
    }
  }
  if(leftAllMoved < oblLayer.length || topAllMoved < oblLayer.length)
    moveOblique_ID = setTimeout("clearTimeout(moveOblique_ID); moveOblique()", oblLayer[0])
  else { 
    leftAllMoved=1
    topAllMoved=1
    alert("À̵¿³¡")
  }
}
·¹À̾ »ç¼±À¸·Î À̵¿ÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù. À§ÀÇ ±½Àº ±ÛÀÚµéÀº ¸ðµç ·¹À̾ À̵¿À» Á¾·áÇßÀ» ¶§ setTimeout()ÀÇ È£ÃâÀ» ¸ØÃß°í ´ÙÀ½ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ°Ô ÇÕ´Ï´Ù. ÀÌ »ç¼±À¸·Î À̵¿Çϱ⸦ »ç¿ëÇϸé Á÷¼±À¸·Î º¸³¾°÷ÀÇ ÁÂÇ¥°¡ Á÷¼±ÀÎÁö »ç¼±ÀÎÁö »ó°ü¾øÀÌ µÑ ´Ù º¸³¾ ¼ö ÀÖ½À´Ï´Ù.

»ç¼±À¸·Î À̵¿Çϱâ 2




top             BACK             top