လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Imageopenpolygon () လည်ပတ်မှုအသွင်ပြောင်းမှတဆင့် ဦး တည်ချက်ကိုပြောင်းလဲရန်

Imageopenpolygon () လည်ပတ်မှုအသွင်ပြောင်းမှတဆင့် ဦး တည်ချက်ကိုပြောင်းလဲရန်

M66 2025-05-29

PHP ရှိ GD စာကြည့်တိုက်တွင်ဂရပ်ဖစ်များကိုအသုံးပြုသောဂရပ်ဖစ်ကိုဆွဲသည့်အခါ ImpoPenPolygon () function ကိုဖွင့်နိုင်သည့် Polygon (I.E. , Polylines) ကိုဆွဲရန်အသုံးပြုနိုင်သည်။ ပုံမှန်အားဖြင့် Imageopenpolygon () ကို သင်ပေးသည့်အစက်အပြောက်အပေါ် အခြေခံ. တိုက်ရိုက်ရေးဆွဲထားသည်။ အကယ်. သင်သည်တုိုင်းရင်းတစ်ချောင်းကိုလှည့်ပတ်ခြင်းကဲ့သို့သော polygon ၏ပုံဆွဲလမ်းကြောင်းကိုသင်ညှိလိုပါကသွဒီနိတ်အချက်များလှည့်ရန်လိုအပ်သည်။

ဤဆောင်းပါးသည် PHP တွင် Rotation Transformation ကိုဂရပ်သို့မည်သို့ကျင့်သုံးရမည်ကိုအသေးစိတ်ရှင်းပြပါမည်

လည်ပတ်အသွင်ပြောင်း၏နိယာမကိုနားလည်ပါ

ဇာတိမြေပတ် 0 န်းဂိတ်တစ်ခု (0, 0) အတွက် ထောင့်တစ်ထောင့်ကိုလှည့်ပြီးနောက်နှစ်ရှုထောင်လေယာဉ်တစ်စင်းတွင် (0, 0) သည် သွဒိနိတ်အသစ်အတွက်တွက်ချက်မှုပုံစံ (x ', y') ဖြစ်သည်။

 x' = x * cos(θ) - y * sin(θ)
y' = x * sin(θ) + y * cos(θ)

မည်သည့်အချက် (CX, CS) ကိုလှည့်ချင်လျှင်, သင်ပထမ ဦး ဆုံးကိုသွဒီနိတ်များကိုမူလအစသို့ပထမဆုံးဘာသာပြန်ပြီးပြန်ဆိုရန်လိုအပ်သည်။

 x' = cos(θ) * (x - cx) - sin(θ) * (y - cy) + cx
y' = sin(θ) * (x - cx) + cos(θ) * (y - cy) + cy

php အတွက်လည်ပတ်အသွင်ပြောင်းလျှောက်ထား

အထက်ပါပုံသေနည်းအပေါ် အခြေခံ. အချက်များအစုတခုလှည့်ရန်ကျွန်ုပ်တို့သည်သေးငယ်သော function ကိုရေးနိုင်သည်။ ဒီနေရာမှာပုံတစ်ပုံကိုဘယ်လိုဖန်တီးရမလဲဆိုတာအပြည့်အဝဥပမာတစ်ခုပါ,

 <?php
// လည်ပတ် function ကိုသတ်မှတ်ပါ
function rotatePoints(array $points, float $angleDegrees, float $centerX = 0, float $centerY = 0): array {
    $angleRadians = deg2rad($angleDegrees);
    $cosTheta = cos($angleRadians);
    $sinTheta = sin($angleRadians);
    $rotatedPoints = [];

    for ($i = 0; $i < count($points); $i += 2) {
        $x = $points[$i];
        $y = $points[$i + 1];

        $xRotated = $cosTheta * ($x - $centerX) - $sinTheta * ($y - $centerY) + $centerX;
        $yRotated = $sinTheta * ($x - $centerX) + $cosTheta * ($y - $centerY) + $centerY;

        $rotatedPoints[] = $xRotated;
        $rotatedPoints[] = $yRotated;
    }

    return $rotatedPoints;
}

// ပတ်တူဖန်တီးပါ
$width = 400;
$height = 400;
$image = imagecreatetruecolor($width, $height);

// အရောင်များကိုသတ်မှတ်ပါ
$backgroundColor = imagecolorallocate($image, 255, 255, 255);
$lineColor = imagecolorallocate($image, 0, 0, 0);

// နောက်ခံဖြည့်ပါ
imagefill($image, 0, 0, $backgroundColor);

// မူရင်းအမှတ်သတ်မှတ်ထား(ရိုးရှင်းသောတြိဂံ)
$points = [
    200, 100,  // အစွန်း1
    300, 300,  // အစွန်း2
    100, 300   // အစွန်း3
];

// အလှည့်ထောင့်ကိုသတ်မှတ်ပါ
$angle = 45; // လက်ယာရစ်လှည့်45ဒီဂရီ

// 计算လှည့်后的အစွန်း集
$rotatedPoints = rotatePoints($points, $angle, 200, 200); // ဗဟိုပတ်ပတ်လည်(200,200)လှည့်

// 绘制လှည့်后的开放多边形
imageopenpolygon($image, $rotatedPoints, count($rotatedPoints) / 2, $lineColor);

// browser မှ output ကိုပုံရိပ်
header('Content-Type: image/png');
imagepng($image);

// အရင်းအမြစ်များကိုဖျက်ဆီးသည်
imagedestroy($image);
?>

မှတ်သားရန်အရာ

  • Imageopenpolygon () သည် Point Array သည်အမိန့်အတွက်ရှုထောင်ခင်းကျင်းရန်လိုအပ်သည် ။ [X1, Y1, X2, Y2, Y2, xn, YN]

  • လှည့်သောအခါကိန်းဂဏန်း၏အလယ်ဗဟိုကိုအလှည့်ကျစင်တာအဖြစ်အသုံးပြုရန်အကောင်းဆုံးဖြစ်သည်။

  • PHP ၏ built-in trigonometnic function သည် radians ယူနစ်များ၌ဖြစ်သည်

ကောက်ချက်

ရိုးရှင်းသောလှည့်အသွင်ပြောင်းပြောင်းလဲခြင်းလုပ်ငန်းစဉ်အားဖြင့်ကျွန်ုပ်တို့သည် Imageopenpolygon () ရေးဆွဲထားသောကိန်းဂဏန်းကိုရေးဆွဲနိုင်သည့်ပုံကိုကျွန်ုပ်တို့ပြုလုပ်နိုင်သည်။ PHP Image processing tips အကြောင်းပိုမိုလေ့လာလိုပါက ဤနေရာတွင်အသေးစိတ်သင်ခန်းစာကို သင်ရည်ညွှန်းနိုင်သည်။

ဤဆောင်းပါးသည် PHP တွင် Impenopenpolygon () နှင့်လည်ပတ်မှုအသွင်ကူးပြောင်းရေးကိုပိုမိုနားလည်သဘောပေါက်ရန်ပိုမိုကောင်းမွန်သောနားလည်မှုကိုပိုမိုနားလည်ရန်ကူညီနိုင်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။