Сыртқы және ішкі қорапшаны ескере отырып, ішкі жәшігінің қайда орналасқанын анықтаңыз

Мен математика мәселесінде күресіп жүрмін және сіздің көмегіңізді пайдалана алады. Мен мынаны білгім келеді:

  • Ішкі қорап ең алдымен сол немесе оң жақта ма?
  • Ішкі қорап сыртқы қораптың жоғарғы немесе төменгі жағында орналасады?

Мұны түсіну үшін мынаны білемін:

  • The height & width of the outer box, this is static at 200px
  • The width of the inner box (var X)
  • The inner box distance from the left of the outer box (var x2)
  • the inner box distance from the top, (var y)

Қандай идеялар, ішкі жәшіктің ең алдымен солға немесе оңға қарай орналасқанын қалай анықтауға болады .. жоғарғы немесе төменгі?

Рақмет сізге!

enter image description here

0
Иә, мен мұны шақырамын!
қосылды автор AnApprentice, көзі
Ішкі қораптың биіктігін білесіз бе?
қосылды автор James Montagne, көзі

3 жауаптар

Ішкі қораптың ортасын оның сол және оң жақ жиектерін орташалау арқылы анықтауға болады. Содан кейін оны сыртқы бокстың ортасына салыңыз, оның негізгі бағыты.

Төмендегі кодқа қоңырау шалып жатырмын

The height & width of the outer box, this is static at 200px

outerH and outerW

Ішкі қораптың ені (var X)

innerW

(Ішкі блоктың биіктігін де сіз білесіз бе, мен оны innerH деп атаймын)

Сыртқы қораптың сол жағынан ішкі жолақ қашықтығы (var x2)

leftPadding

жоғарғы жағынан ішкі жәшік қашықтығы (var y)

topPadding

function isPrimarilyLeft(outerW, innerW, leftPadding) {
  var outerCentroidX = outerW/2;
 //center = (leftedge + right edge)/2
 //leftedge = leftPadding
 //rightedge = leftpadding + innerWidth
 //center = (leftPadding + leftPadding + width)/2
 //       = 2*leftPadding/2 + width/2 =
  var innerCentroidX = leftPadding + innerW/2;
  return innerCentroidX < outerCentroidX;
}

function isPrimarilyTop(outerH, innerH, topPadding) {
  var outerCentroidY = outerH/2;
  var innerCentroidY = topPadding + innerH/2;
  return innerCentroidY < outerCentroidY;
}
1
қосылды
Бұл мысалда outerW, innerW, leftPadding деген не?
қосылды автор AnApprentice, көзі
Бұл бірінші w деп PrimibilityLeft-ды тексерді және ол әрқашан шындыққа оралады. Жалғандарды қайтару керек болатын нәрселер үшін маңызы: (200, 121,5,54.5)
қосылды автор AnApprentice, көзі
Майк, қайтадан тырысыңыз ....
қосылды автор AnApprentice, көзі
wow wow, бұл бірінші кезекте солға жасады. Сізге жеткілікті рақмет. шын мәнінде мен алмаймын
қосылды автор AnApprentice, көзі
@AnApprentice, параметр атауларының сіз білетін заттарға сәйкес келетінін түсіндіру үшін өңделген.
қосылды автор Mike Samuel, көзі
@AnApprentice, егер сіздің ішкі жолақыңыз ені 121,5 және 54,5 пиксельден басталса, оның орталығы 115.25-де орналасқан, ол сыртқы қораптың орталығына жақын, сондықтан оның көп бөлігі сыртқы қораптардың орталық сызығының оң жағында. squarefree.com/shell/shell.html , isPrimallyLeft (200, 121,5, 54.5) жалған нәтиже береді. жалған
қосылды автор Mike Samuel, көзі

Мүмкін болатын шешім үшін негізгі ойлау үдерісін түсіндіремін.

Ол «солға» немесе жоқ екендігін есептеу үшін, қашықтықтың үлкен екенін, ішкі жәшігінің сол жағы арасындағы сыртқы жаққа немесе оңға дейінгі қашықтықты анықтау керек болады.

Сіз сол жақта қашықтықты білесіз. Оң жақта қашықтықты есептеу үшін жалпы сыртқы жолды қабылдау керек және ішкі жәшігінің енін және сол жақтан қашықтықты алып тастау керек:

|-------------------------Outer Box----------------------------------|
|---left distance---|---------inner box--------|---right distance----|

Енді сол жақтан оң жақтан үлкенірек болса, ол «дұрыс», егер олар тең болса, ол орталықтандырылған және егер ол кем болса «сол».

Сонымен қатар жоғарыдан төменге қарай жүреді.

1
қосылды

The box is primarily on the left: X < (200 - x2)/2

The box is primarily on the right: X > (200 - x2)/2

The box is primarily on the top: Y < (200 - y)/2 (I suppose you can calculate the box's height - Y)

The box is primarily on the bottom: Y > (200 - y)/2

Ені/биіктігі бойынша 200 ауыстырыңыз.

0
қосылды