[{"data":1,"prerenderedAt":2504},["ShallowReactive",2],{"navigation_docs":3,"-layers-wind-layers":90,"-layers-wind-layers-surround":2499},[4,22,35,73],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Guide","\u002Fguide","1.guide",[9,13,17],{"title":10,"path":11,"stem":12},"Getting Started","\u002Fguide\u002Fgetting-started","1.guide\u002F1.getting-started",{"title":14,"path":15,"stem":16},"Peer Dependencies","\u002Fguide\u002Fpeer-dependencies","1.guide\u002F2.peer-dependencies",{"title":18,"path":19,"stem":20},"Examples","\u002Fguide\u002Fexamples","1.guide\u002F3.examples",false,{"title":23,"path":24,"stem":25,"children":26,"page":21},"Components","\u002Fcomponents","2.components",[27,31],{"title":28,"path":29,"stem":30},"VMap","\u002Fcomponents\u002Fmap","2.components\u002F1.map",{"title":32,"path":33,"stem":34},"VMarker","\u002Fcomponents\u002Fmarkers","2.components\u002F2.markers",{"title":36,"path":37,"stem":38,"children":39,"page":21},"Layers","\u002Flayers","3.layers",[40,44,48,52,56,60,64,69],{"title":41,"path":42,"stem":43},"Deck.gl Layers","\u002Flayers\u002Fdeckgl-overview","3.layers\u002F1.deckgl-overview",{"title":45,"path":46,"stem":47},"Core Layers","\u002Flayers\u002Fcore-layers","3.layers\u002F2.core-layers",{"title":49,"path":50,"stem":51},"Aggregation Layers","\u002Flayers\u002Faggregation-layers","3.layers\u002F3.aggregation-layers",{"title":53,"path":54,"stem":55},"Geo Layers","\u002Flayers\u002Fgeo-layers","3.layers\u002F4.geo-layers",{"title":57,"path":58,"stem":59},"Raster Layers","\u002Flayers\u002Fraster-layers","3.layers\u002F5.raster-layers",{"title":61,"path":62,"stem":63},"Wind Layers","\u002Flayers\u002Fwind-layers","3.layers\u002F6.wind-layers",{"title":65,"path":66,"stem":67,"icon":68},"MapLibre Layers","\u002Flayers\u002Fmaplibre-layers","3.layers\u002F7.maplibre-layers","i-lucide-layers",{"title":70,"path":71,"stem":72},"GeoArrow Layers","\u002Flayers\u002Fgeoarrow-layers","3.layers\u002F8.geoarrow-layers",{"title":74,"path":75,"stem":76,"children":77,"page":21},"Controls","\u002Fcontrols","4.controls",[78,82,86],{"title":79,"path":80,"stem":81},"VControlLidar","\u002Fcontrols\u002Flidar","4.controls\u002F1.lidar",{"title":83,"path":84,"stem":85},"Layer Controls","\u002Fcontrols\u002Flayer","4.controls\u002F2.layer",{"title":87,"path":88,"stem":89},"VControlLegend","\u002Fcontrols\u002Flegend","4.controls\u002F3.legend",{"id":91,"title":61,"body":92,"description":2493,"extension":2494,"links":2495,"meta":2496,"navigation":307,"path":62,"seo":2497,"stem":63,"__hash__":2498},"docs\u002F3.layers\u002F6.wind-layers.md",{"type":93,"value":94,"toc":2476},"minimark",[95,106,117,122,125,130,156,160,179,183,186,205,209,794,798,1196,1200,1508,1512,1584,1588,1666,1670,1892,1896,1899,2040,2043,2047,2399,2403,2433,2437,2472],[96,97,98],"blockquote",{},[99,100,101,102,105],"p",{},"See ",[103,104,14],"a",{"href":15}," for the complete list of required packages for each component.",[107,108,112,116],"callout",{"icon":109,"target":110,"to":111},"i-lucide-wind","_blank","https:\u002F\u002Fmapcn-vue.geoql.in\u002Fexamples\u002Fwind",[113,114,115],"strong",{},"Live Demo"," - GPU-accelerated wind particle flow visualization",[118,119,121],"h2",{"id":120},"vlayerwindparticle","VLayerWindParticle",[99,123,124],{},"GPU-accelerated animated wind particle layer using deck.gl transform feedback. Visualize wind speed and direction with flowing particles colored by velocity.",[126,127,129],"h3",{"id":128},"installation","Installation",[131,132,137],"pre",{"className":133,"code":134,"language":135,"meta":136,"style":136},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add maplibre-gl-wind\n","bash","",[138,139,140],"code",{"__ignoreMap":136},[141,142,145,149,153],"span",{"class":143,"line":144},"line",1,[141,146,148],{"class":147},"sBMFI","pnpm",[141,150,152],{"class":151},"sfazB"," add",[141,154,155],{"class":151}," maplibre-gl-wind\n",[126,157,159],{"id":158},"features","Features",[161,162,163,167,170,173,176],"ul",{},[164,165,166],"li",{},"GPU-accelerated particle animation via transform feedback",[164,168,169],{},"Speed-based color ramps for wind intensity visualization",[164,171,172],{},"IDW interpolation from sparse data points to full-coverage texture",[164,174,175],{},"Pre-rendered wind texture support (e.g., from weather APIs)",[164,177,178],{},"Configurable particle count, lifetime, and speed scaling",[126,180,182],{"id":181},"data-sources","Data Sources",[99,184,185],{},"The wind layer supports two input modes:",[187,188,189,199],"ol",{},[164,190,191,194,195,198],{},[113,192,193],{},"Wind Data Points"," - Array of ",[138,196,197],{},"{lat, lon, speed, direction}"," objects (IDW-interpolated to texture)",[164,200,201,204],{},[113,202,203],{},"Pre-rendered Image"," - Wind velocity texture URL (for weather API outputs)",[126,206,208],{"id":207},"basic-usage","Basic Usage",[131,210,214],{"className":211,"code":212,"language":213,"meta":136,"style":136},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\n  import { VMap } from '@geoql\u002Fv-maplibre';\n  import { VLayerWindParticle } from '@geoql\u002Fv-maplibre\u002Fwind';\n\n  const mapOptions = {\n    style: 'https:\u002F\u002Fbasemaps.cartocdn.com\u002Fgl\u002Fdark-matter-nolabels-gl-style\u002Fstyle.json',\n    center: [0, 20],\n    zoom: 2,\n  };\n\n  \u002F\u002F Wind data: speed in m\u002Fs, direction in degrees (0 = North, 90 = East)\n  const windData = [\n    { lat: 40.7128, lon: -74.006, speed: 5.2, direction: 180 },\n    { lat: 34.0522, lon: -118.2437, speed: 3.1, direction: 270 },\n    { lat: 51.5074, lon: -0.1278, speed: 8.5, direction: 225 },\n    { lat: 35.6762, lon: 139.6503, speed: 4.8, direction: 90 },\n    { lat: -33.8688, lon: 151.2093, speed: 6.2, direction: 315 },\n  ];\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CVMap :options=\"mapOptions\" style=\"height: 500px\">\n    \u003CVLayerWindParticle\n      id=\"wind-layer\"\n      :wind-data=\"windData\"\n      :num-particles=\"8192\"\n      :speed-factor=\"50\"\n    \u002F>\n  \u003C\u002FVMap>\n\u003C\u002Ftemplate>\n","vue",[138,215,216,247,279,302,309,323,342,368,381,387,392,399,412,462,505,548,589,632,640,650,655,665,699,708,724,739,754,769,775,785],{"__ignoreMap":136},[141,217,218,222,226,230,233,236,239,242,244],{"class":143,"line":144},[141,219,221],{"class":220},"sMK4o","\u003C",[141,223,225],{"class":224},"swJcz","script",[141,227,229],{"class":228},"spNyl"," setup",[141,231,232],{"class":228}," lang",[141,234,235],{"class":220},"=",[141,237,238],{"class":220},"\"",[141,240,241],{"class":151},"ts",[141,243,238],{"class":220},[141,245,246],{"class":220},">\n",[141,248,250,254,257,261,264,267,270,273,276],{"class":143,"line":249},2,[141,251,253],{"class":252},"s7zQu","  import",[141,255,256],{"class":220}," {",[141,258,260],{"class":259},"sTEyZ"," VMap",[141,262,263],{"class":220}," }",[141,265,266],{"class":252}," from",[141,268,269],{"class":220}," '",[141,271,272],{"class":151},"@geoql\u002Fv-maplibre",[141,274,275],{"class":220},"'",[141,277,278],{"class":220},";\n",[141,280,282,284,286,289,291,293,295,298,300],{"class":143,"line":281},3,[141,283,253],{"class":252},[141,285,256],{"class":220},[141,287,288],{"class":259}," VLayerWindParticle",[141,290,263],{"class":220},[141,292,266],{"class":252},[141,294,269],{"class":220},[141,296,297],{"class":151},"@geoql\u002Fv-maplibre\u002Fwind",[141,299,275],{"class":220},[141,301,278],{"class":220},[141,303,305],{"class":143,"line":304},4,[141,306,308],{"emptyLinePlaceholder":307},true,"\n",[141,310,312,315,318,320],{"class":143,"line":311},5,[141,313,314],{"class":228},"  const",[141,316,317],{"class":259}," mapOptions ",[141,319,235],{"class":220},[141,321,322],{"class":220}," {\n",[141,324,326,329,332,334,337,339],{"class":143,"line":325},6,[141,327,328],{"class":224},"    style",[141,330,331],{"class":220},":",[141,333,269],{"class":220},[141,335,336],{"class":151},"https:\u002F\u002Fbasemaps.cartocdn.com\u002Fgl\u002Fdark-matter-nolabels-gl-style\u002Fstyle.json",[141,338,275],{"class":220},[141,340,341],{"class":220},",\n",[141,343,345,348,350,353,357,360,363,366],{"class":143,"line":344},7,[141,346,347],{"class":224},"    center",[141,349,331],{"class":220},[141,351,352],{"class":259}," [",[141,354,356],{"class":355},"sbssI","0",[141,358,359],{"class":220},",",[141,361,362],{"class":355}," 20",[141,364,365],{"class":259},"]",[141,367,341],{"class":220},[141,369,371,374,376,379],{"class":143,"line":370},8,[141,372,373],{"class":224},"    zoom",[141,375,331],{"class":220},[141,377,378],{"class":355}," 2",[141,380,341],{"class":220},[141,382,384],{"class":143,"line":383},9,[141,385,386],{"class":220},"  };\n",[141,388,390],{"class":143,"line":389},10,[141,391,308],{"emptyLinePlaceholder":307},[141,393,395],{"class":143,"line":394},11,[141,396,398],{"class":397},"sHwdD","  \u002F\u002F Wind data: speed in m\u002Fs, direction in degrees (0 = North, 90 = East)\n",[141,400,402,404,407,409],{"class":143,"line":401},12,[141,403,314],{"class":228},[141,405,406],{"class":259}," windData ",[141,408,235],{"class":220},[141,410,411],{"class":259}," [\n",[141,413,415,418,421,423,426,428,431,433,436,439,441,444,446,449,451,454,456,459],{"class":143,"line":414},13,[141,416,417],{"class":220},"    {",[141,419,420],{"class":224}," lat",[141,422,331],{"class":220},[141,424,425],{"class":355}," 40.7128",[141,427,359],{"class":220},[141,429,430],{"class":224}," lon",[141,432,331],{"class":220},[141,434,435],{"class":220}," -",[141,437,438],{"class":355},"74.006",[141,440,359],{"class":220},[141,442,443],{"class":224}," speed",[141,445,331],{"class":220},[141,447,448],{"class":355}," 5.2",[141,450,359],{"class":220},[141,452,453],{"class":224}," direction",[141,455,331],{"class":220},[141,457,458],{"class":355}," 180",[141,460,461],{"class":220}," },\n",[141,463,465,467,469,471,474,476,478,480,482,485,487,489,491,494,496,498,500,503],{"class":143,"line":464},14,[141,466,417],{"class":220},[141,468,420],{"class":224},[141,470,331],{"class":220},[141,472,473],{"class":355}," 34.0522",[141,475,359],{"class":220},[141,477,430],{"class":224},[141,479,331],{"class":220},[141,481,435],{"class":220},[141,483,484],{"class":355},"118.2437",[141,486,359],{"class":220},[141,488,443],{"class":224},[141,490,331],{"class":220},[141,492,493],{"class":355}," 3.1",[141,495,359],{"class":220},[141,497,453],{"class":224},[141,499,331],{"class":220},[141,501,502],{"class":355}," 270",[141,504,461],{"class":220},[141,506,508,510,512,514,517,519,521,523,525,528,530,532,534,537,539,541,543,546],{"class":143,"line":507},15,[141,509,417],{"class":220},[141,511,420],{"class":224},[141,513,331],{"class":220},[141,515,516],{"class":355}," 51.5074",[141,518,359],{"class":220},[141,520,430],{"class":224},[141,522,331],{"class":220},[141,524,435],{"class":220},[141,526,527],{"class":355},"0.1278",[141,529,359],{"class":220},[141,531,443],{"class":224},[141,533,331],{"class":220},[141,535,536],{"class":355}," 8.5",[141,538,359],{"class":220},[141,540,453],{"class":224},[141,542,331],{"class":220},[141,544,545],{"class":355}," 225",[141,547,461],{"class":220},[141,549,551,553,555,557,560,562,564,566,569,571,573,575,578,580,582,584,587],{"class":143,"line":550},16,[141,552,417],{"class":220},[141,554,420],{"class":224},[141,556,331],{"class":220},[141,558,559],{"class":355}," 35.6762",[141,561,359],{"class":220},[141,563,430],{"class":224},[141,565,331],{"class":220},[141,567,568],{"class":355}," 139.6503",[141,570,359],{"class":220},[141,572,443],{"class":224},[141,574,331],{"class":220},[141,576,577],{"class":355}," 4.8",[141,579,359],{"class":220},[141,581,453],{"class":224},[141,583,331],{"class":220},[141,585,586],{"class":355}," 90",[141,588,461],{"class":220},[141,590,592,594,596,598,600,603,605,607,609,612,614,616,618,621,623,625,627,630],{"class":143,"line":591},17,[141,593,417],{"class":220},[141,595,420],{"class":224},[141,597,331],{"class":220},[141,599,435],{"class":220},[141,601,602],{"class":355},"33.8688",[141,604,359],{"class":220},[141,606,430],{"class":224},[141,608,331],{"class":220},[141,610,611],{"class":355}," 151.2093",[141,613,359],{"class":220},[141,615,443],{"class":224},[141,617,331],{"class":220},[141,619,620],{"class":355}," 6.2",[141,622,359],{"class":220},[141,624,453],{"class":224},[141,626,331],{"class":220},[141,628,629],{"class":355}," 315",[141,631,461],{"class":220},[141,633,635,638],{"class":143,"line":634},18,[141,636,637],{"class":259},"  ]",[141,639,278],{"class":220},[141,641,643,646,648],{"class":143,"line":642},19,[141,644,645],{"class":220},"\u003C\u002F",[141,647,225],{"class":224},[141,649,246],{"class":220},[141,651,653],{"class":143,"line":652},20,[141,654,308],{"emptyLinePlaceholder":307},[141,656,658,660,663],{"class":143,"line":657},21,[141,659,221],{"class":220},[141,661,662],{"class":224},"template",[141,664,246],{"class":220},[141,666,668,671,673,676,678,680,683,685,688,690,692,695,697],{"class":143,"line":667},22,[141,669,670],{"class":220},"  \u003C",[141,672,28],{"class":224},[141,674,675],{"class":228}," :options",[141,677,235],{"class":220},[141,679,238],{"class":220},[141,681,682],{"class":151},"mapOptions",[141,684,238],{"class":220},[141,686,687],{"class":228}," style",[141,689,235],{"class":220},[141,691,238],{"class":220},[141,693,694],{"class":151},"height: 500px",[141,696,238],{"class":220},[141,698,246],{"class":220},[141,700,702,705],{"class":143,"line":701},23,[141,703,704],{"class":220},"    \u003C",[141,706,707],{"class":224},"VLayerWindParticle\n",[141,709,711,714,716,718,721],{"class":143,"line":710},24,[141,712,713],{"class":228},"      id",[141,715,235],{"class":220},[141,717,238],{"class":220},[141,719,720],{"class":151},"wind-layer",[141,722,723],{"class":220},"\"\n",[141,725,727,730,732,734,737],{"class":143,"line":726},25,[141,728,729],{"class":228},"      :wind-data",[141,731,235],{"class":220},[141,733,238],{"class":220},[141,735,736],{"class":151},"windData",[141,738,723],{"class":220},[141,740,742,745,747,749,752],{"class":143,"line":741},26,[141,743,744],{"class":228},"      :num-particles",[141,746,235],{"class":220},[141,748,238],{"class":220},[141,750,751],{"class":151},"8192",[141,753,723],{"class":220},[141,755,757,760,762,764,767],{"class":143,"line":756},27,[141,758,759],{"class":228},"      :speed-factor",[141,761,235],{"class":220},[141,763,238],{"class":220},[141,765,766],{"class":151},"50",[141,768,723],{"class":220},[141,770,772],{"class":143,"line":771},28,[141,773,774],{"class":220},"    \u002F>\n",[141,776,778,781,783],{"class":143,"line":777},29,[141,779,780],{"class":220},"  \u003C\u002F",[141,782,28],{"class":224},[141,784,246],{"class":220},[141,786,788,790,792],{"class":143,"line":787},30,[141,789,645],{"class":220},[141,791,662],{"class":224},[141,793,246],{"class":220},[126,795,797],{"id":796},"props","Props",[799,800,801,820],"table",{},[802,803,804],"thead",{},[805,806,807,811,814,817],"tr",{},[808,809,810],"th",{},"Prop",[808,812,813],{},"Type",[808,815,816],{},"Default",[808,818,819],{},"Description",[821,822,823,842,859,875,898,918,936,954,972,990,1009,1027,1047,1065,1085,1104,1124,1143,1161,1180],"tbody",{},[805,824,825,831,836,839],{},[826,827,828],"td",{},[138,829,830],{},"id",[826,832,833],{},[138,834,835],{},"string",[826,837,838],{},"required",[826,840,841],{},"Unique layer identifier",[805,843,844,848,853,856],{},[826,845,846],{},[138,847,736],{},[826,849,850],{},[138,851,852],{},"WindDataPoint[]",[826,854,855],{},"-",[826,857,858],{},"Array of wind observations (IDW-interpolated)",[805,860,861,866,870,872],{},[826,862,863],{},[138,864,865],{},"imageUrl",[826,867,868],{},[138,869,835],{},[826,871,855],{},[826,873,874],{},"Pre-rendered wind texture URL",[805,876,877,882,887,892],{},[826,878,879],{},[138,880,881],{},"bounds",[826,883,884],{},[138,885,886],{},"[number, number, number, number]",[826,888,889],{},[138,890,891],{},"[-180, -90, 180, 90]",[826,893,894,895],{},"Geographic bounds ",[141,896,897],{},"west, south, east, north",[805,899,900,905,910,915],{},[826,901,902],{},[138,903,904],{},"uMin",[826,906,907],{},[138,908,909],{},"number",[826,911,912],{},[138,913,914],{},"-50",[826,916,917],{},"Minimum U component (only for imageUrl mode)",[805,919,920,925,929,933],{},[826,921,922],{},[138,923,924],{},"uMax",[826,926,927],{},[138,928,909],{},[826,930,931],{},[138,932,766],{},[826,934,935],{},"Maximum U component (only for imageUrl mode)",[805,937,938,943,947,951],{},[826,939,940],{},[138,941,942],{},"vMin",[826,944,945],{},[138,946,909],{},[826,948,949],{},[138,950,914],{},[826,952,953],{},"Minimum V component (only for imageUrl mode)",[805,955,956,961,965,969],{},[826,957,958],{},[138,959,960],{},"vMax",[826,962,963],{},[138,964,909],{},[826,966,967],{},[138,968,766],{},[826,970,971],{},"Maximum V component (only for imageUrl mode)",[805,973,974,979,983,987],{},[826,975,976],{},[138,977,978],{},"numParticles",[826,980,981],{},[138,982,909],{},[826,984,985],{},[138,986,751],{},[826,988,989],{},"Number of particles to render",[805,991,992,997,1001,1006],{},[826,993,994],{},[138,995,996],{},"maxAge",[826,998,999],{},[138,1000,909],{},[826,1002,1003],{},[138,1004,1005],{},"30",[826,1007,1008],{},"Particle lifetime in frames",[805,1010,1011,1016,1020,1024],{},[826,1012,1013],{},[138,1014,1015],{},"speedFactor",[826,1017,1018],{},[138,1019,909],{},[826,1021,1022],{},[138,1023,766],{},[826,1025,1026],{},"Particle movement speed multiplier",[805,1028,1029,1034,1039,1044],{},[826,1030,1031],{},[138,1032,1033],{},"color",[826,1035,1036],{},[138,1037,1038],{},"Color",[826,1040,1041],{},[138,1042,1043],{},"[255, 255, 255, 200]",[826,1045,1046],{},"Fallback color when colorRamp not used",[805,1048,1049,1054,1059,1062],{},[826,1050,1051],{},[138,1052,1053],{},"colorRamp",[826,1055,1056],{},[138,1057,1058],{},"ColorStop[]",[826,1060,1061],{},"See below",[826,1063,1064],{},"Speed-based color gradient",[805,1066,1067,1072,1077,1082],{},[826,1068,1069],{},[138,1070,1071],{},"speedRange",[826,1073,1074],{},[138,1075,1076],{},"[number, number]",[826,1078,1079],{},[138,1080,1081],{},"[0, 30]",[826,1083,1084],{},"Speed range for color mapping (m\u002Fs)",[805,1086,1087,1092,1096,1101],{},[826,1088,1089],{},[138,1090,1091],{},"width",[826,1093,1094],{},[138,1095,909],{},[826,1097,1098],{},[138,1099,1100],{},"1.5",[826,1102,1103],{},"Particle trail width in pixels",[805,1105,1106,1111,1116,1121],{},[826,1107,1108],{},[138,1109,1110],{},"animate",[826,1112,1113],{},[138,1114,1115],{},"boolean",[826,1117,1118],{},[138,1119,1120],{},"true",[826,1122,1123],{},"Enable particle animation",[805,1125,1126,1131,1135,1140],{},[826,1127,1128],{},[138,1129,1130],{},"opacity",[826,1132,1133],{},[138,1134,909],{},[826,1136,1137],{},[138,1138,1139],{},"1",[826,1141,1142],{},"Layer opacity (0-1)",[805,1144,1145,1150,1154,1158],{},[826,1146,1147],{},[138,1148,1149],{},"visible",[826,1151,1152],{},[138,1153,1115],{},[826,1155,1156],{},[138,1157,1120],{},[826,1159,1160],{},"Layer visibility",[805,1162,1163,1168,1172,1177],{},[826,1164,1165],{},[138,1166,1167],{},"pickable",[826,1169,1170],{},[138,1171,1115],{},[826,1173,1174],{},[138,1175,1176],{},"false",[826,1178,1179],{},"Enable picking",[805,1181,1182,1187,1191,1193],{},[826,1183,1184],{},[138,1185,1186],{},"beforeId",[826,1188,1189],{},[138,1190,835],{},[826,1192,855],{},[826,1194,1195],{},"Insert layer before this layer ID",[126,1197,1199],{"id":1198},"default-color-ramp","Default Color Ramp",[131,1201,1205],{"className":1202,"code":1203,"language":1204,"meta":136,"style":136},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const defaultColorRamp = [\n  [0.0, [59, 130, 189, 255]],   \u002F\u002F Blue - calm\n  [0.1, [102, 194, 165, 255]],  \u002F\u002F Teal\n  [0.2, [171, 221, 164, 255]],  \u002F\u002F Light green\n  [0.3, [230, 245, 152, 255]],  \u002F\u002F Yellow-green\n  [0.4, [254, 224, 139, 255]],  \u002F\u002F Yellow\n  [0.5, [253, 174, 97, 255]],   \u002F\u002F Orange\n  [0.6, [244, 109, 67, 255]],   \u002F\u002F Red-orange\n  [1.0, [213, 62, 79, 255]],    \u002F\u002F Red - strong\n];\n","typescript",[138,1206,1207,1219,1257,1292,1327,1362,1397,1432,1467,1502],{"__ignoreMap":136},[141,1208,1209,1212,1215,1217],{"class":143,"line":144},[141,1210,1211],{"class":228},"const",[141,1213,1214],{"class":259}," defaultColorRamp ",[141,1216,235],{"class":220},[141,1218,411],{"class":259},[141,1220,1221,1224,1227,1229,1231,1234,1236,1239,1241,1244,1246,1249,1252,1254],{"class":143,"line":249},[141,1222,1223],{"class":259},"  [",[141,1225,1226],{"class":355},"0.0",[141,1228,359],{"class":220},[141,1230,352],{"class":259},[141,1232,1233],{"class":355},"59",[141,1235,359],{"class":220},[141,1237,1238],{"class":355}," 130",[141,1240,359],{"class":220},[141,1242,1243],{"class":355}," 189",[141,1245,359],{"class":220},[141,1247,1248],{"class":355}," 255",[141,1250,1251],{"class":259},"]]",[141,1253,359],{"class":220},[141,1255,1256],{"class":397},"   \u002F\u002F Blue - calm\n",[141,1258,1259,1261,1264,1266,1268,1271,1273,1276,1278,1281,1283,1285,1287,1289],{"class":143,"line":281},[141,1260,1223],{"class":259},[141,1262,1263],{"class":355},"0.1",[141,1265,359],{"class":220},[141,1267,352],{"class":259},[141,1269,1270],{"class":355},"102",[141,1272,359],{"class":220},[141,1274,1275],{"class":355}," 194",[141,1277,359],{"class":220},[141,1279,1280],{"class":355}," 165",[141,1282,359],{"class":220},[141,1284,1248],{"class":355},[141,1286,1251],{"class":259},[141,1288,359],{"class":220},[141,1290,1291],{"class":397},"  \u002F\u002F Teal\n",[141,1293,1294,1296,1299,1301,1303,1306,1308,1311,1313,1316,1318,1320,1322,1324],{"class":143,"line":304},[141,1295,1223],{"class":259},[141,1297,1298],{"class":355},"0.2",[141,1300,359],{"class":220},[141,1302,352],{"class":259},[141,1304,1305],{"class":355},"171",[141,1307,359],{"class":220},[141,1309,1310],{"class":355}," 221",[141,1312,359],{"class":220},[141,1314,1315],{"class":355}," 164",[141,1317,359],{"class":220},[141,1319,1248],{"class":355},[141,1321,1251],{"class":259},[141,1323,359],{"class":220},[141,1325,1326],{"class":397},"  \u002F\u002F Light green\n",[141,1328,1329,1331,1334,1336,1338,1341,1343,1346,1348,1351,1353,1355,1357,1359],{"class":143,"line":311},[141,1330,1223],{"class":259},[141,1332,1333],{"class":355},"0.3",[141,1335,359],{"class":220},[141,1337,352],{"class":259},[141,1339,1340],{"class":355},"230",[141,1342,359],{"class":220},[141,1344,1345],{"class":355}," 245",[141,1347,359],{"class":220},[141,1349,1350],{"class":355}," 152",[141,1352,359],{"class":220},[141,1354,1248],{"class":355},[141,1356,1251],{"class":259},[141,1358,359],{"class":220},[141,1360,1361],{"class":397},"  \u002F\u002F Yellow-green\n",[141,1363,1364,1366,1369,1371,1373,1376,1378,1381,1383,1386,1388,1390,1392,1394],{"class":143,"line":325},[141,1365,1223],{"class":259},[141,1367,1368],{"class":355},"0.4",[141,1370,359],{"class":220},[141,1372,352],{"class":259},[141,1374,1375],{"class":355},"254",[141,1377,359],{"class":220},[141,1379,1380],{"class":355}," 224",[141,1382,359],{"class":220},[141,1384,1385],{"class":355}," 139",[141,1387,359],{"class":220},[141,1389,1248],{"class":355},[141,1391,1251],{"class":259},[141,1393,359],{"class":220},[141,1395,1396],{"class":397},"  \u002F\u002F Yellow\n",[141,1398,1399,1401,1404,1406,1408,1411,1413,1416,1418,1421,1423,1425,1427,1429],{"class":143,"line":344},[141,1400,1223],{"class":259},[141,1402,1403],{"class":355},"0.5",[141,1405,359],{"class":220},[141,1407,352],{"class":259},[141,1409,1410],{"class":355},"253",[141,1412,359],{"class":220},[141,1414,1415],{"class":355}," 174",[141,1417,359],{"class":220},[141,1419,1420],{"class":355}," 97",[141,1422,359],{"class":220},[141,1424,1248],{"class":355},[141,1426,1251],{"class":259},[141,1428,359],{"class":220},[141,1430,1431],{"class":397},"   \u002F\u002F Orange\n",[141,1433,1434,1436,1439,1441,1443,1446,1448,1451,1453,1456,1458,1460,1462,1464],{"class":143,"line":370},[141,1435,1223],{"class":259},[141,1437,1438],{"class":355},"0.6",[141,1440,359],{"class":220},[141,1442,352],{"class":259},[141,1444,1445],{"class":355},"244",[141,1447,359],{"class":220},[141,1449,1450],{"class":355}," 109",[141,1452,359],{"class":220},[141,1454,1455],{"class":355}," 67",[141,1457,359],{"class":220},[141,1459,1248],{"class":355},[141,1461,1251],{"class":259},[141,1463,359],{"class":220},[141,1465,1466],{"class":397},"   \u002F\u002F Red-orange\n",[141,1468,1469,1471,1474,1476,1478,1481,1483,1486,1488,1491,1493,1495,1497,1499],{"class":143,"line":383},[141,1470,1223],{"class":259},[141,1472,1473],{"class":355},"1.0",[141,1475,359],{"class":220},[141,1477,352],{"class":259},[141,1479,1480],{"class":355},"213",[141,1482,359],{"class":220},[141,1484,1485],{"class":355}," 62",[141,1487,359],{"class":220},[141,1489,1490],{"class":355}," 79",[141,1492,359],{"class":220},[141,1494,1248],{"class":355},[141,1496,1251],{"class":259},[141,1498,359],{"class":220},[141,1500,1501],{"class":397},"    \u002F\u002F Red - strong\n",[141,1503,1504,1506],{"class":143,"line":389},[141,1505,365],{"class":259},[141,1507,278],{"class":220},[126,1509,1511],{"id":1510},"events","Events",[799,1513,1514,1526],{},[802,1515,1516],{},[805,1517,1518,1521,1524],{},[808,1519,1520],{},"Event",[808,1522,1523],{},"Payload",[808,1525,819],{},[821,1527,1528,1540,1555,1570],{},[805,1529,1530,1535,1537],{},[826,1531,1532],{},[138,1533,1534],{},"@loaded",[826,1536,855],{},[826,1538,1539],{},"Layer initialized and ready",[805,1541,1542,1547,1552],{},[826,1543,1544],{},[138,1545,1546],{},"@error",[826,1548,1549],{},[138,1550,1551],{},"Error",[826,1553,1554],{},"Error during initialization",[805,1556,1557,1562,1567],{},[826,1558,1559],{},[138,1560,1561],{},"@click",[826,1563,1564],{},[138,1565,1566],{},"PickingInfo",[826,1568,1569],{},"Clicked on layer",[805,1571,1572,1577,1581],{},[826,1573,1574],{},[138,1575,1576],{},"@hover",[826,1578,1579],{},[138,1580,1566],{},[826,1582,1583],{},"Hovering over layer",[126,1585,1587],{"id":1586},"winddatapoint-type","WindDataPoint Type",[131,1589,1591],{"className":1202,"code":1590,"language":1204,"meta":136,"style":136},"interface WindDataPoint {\n  lat: number;      \u002F\u002F Latitude (-90 to 90)\n  lon: number;      \u002F\u002F Longitude (-180 to 180)\n  speed: number;    \u002F\u002F Wind speed in m\u002Fs\n  direction: number; \u002F\u002F Wind direction in degrees (0 = North, clockwise)\n}\n",[138,1592,1593,1603,1619,1633,1647,1661],{"__ignoreMap":136},[141,1594,1595,1598,1601],{"class":143,"line":144},[141,1596,1597],{"class":228},"interface",[141,1599,1600],{"class":147}," WindDataPoint",[141,1602,322],{"class":220},[141,1604,1605,1608,1610,1613,1616],{"class":143,"line":249},[141,1606,1607],{"class":224},"  lat",[141,1609,331],{"class":220},[141,1611,1612],{"class":147}," number",[141,1614,1615],{"class":220},";",[141,1617,1618],{"class":397},"      \u002F\u002F Latitude (-90 to 90)\n",[141,1620,1621,1624,1626,1628,1630],{"class":143,"line":281},[141,1622,1623],{"class":224},"  lon",[141,1625,331],{"class":220},[141,1627,1612],{"class":147},[141,1629,1615],{"class":220},[141,1631,1632],{"class":397},"      \u002F\u002F Longitude (-180 to 180)\n",[141,1634,1635,1638,1640,1642,1644],{"class":143,"line":304},[141,1636,1637],{"class":224},"  speed",[141,1639,331],{"class":220},[141,1641,1612],{"class":147},[141,1643,1615],{"class":220},[141,1645,1646],{"class":397},"    \u002F\u002F Wind speed in m\u002Fs\n",[141,1648,1649,1652,1654,1656,1658],{"class":143,"line":311},[141,1650,1651],{"class":224},"  direction",[141,1653,331],{"class":220},[141,1655,1612],{"class":147},[141,1657,1615],{"class":220},[141,1659,1660],{"class":397}," \u002F\u002F Wind direction in degrees (0 = North, clockwise)\n",[141,1662,1663],{"class":143,"line":325},[141,1664,1665],{"class":220},"}\n",[126,1667,1669],{"id":1668},"custom-color-ramp","Custom Color Ramp",[131,1671,1673],{"className":211,"code":1672,"language":213,"meta":136,"style":136},"\u003CVLayerWindParticle\n  id=\"wind\"\n  :wind-data=\"windData\"\n  :color-ramp=\"[\n    [0.0, [65, 105, 225, 255]],   \u002F\u002F Royal blue - calm\n    [0.3, [50, 205, 50, 255]],    \u002F\u002F Lime green - moderate\n    [0.6, [255, 165, 0, 255]],    \u002F\u002F Orange - strong\n    [1.0, [255, 0, 0, 255]],      \u002F\u002F Red - extreme\n  ]\"\n  :speed-range=\"[0, 40]\"\n\u002F>\n",[138,1674,1675,1681,1695,1711,1725,1759,1792,1825,1856,1862,1887],{"__ignoreMap":136},[141,1676,1677,1679],{"class":143,"line":144},[141,1678,221],{"class":220},[141,1680,707],{"class":224},[141,1682,1683,1686,1688,1690,1693],{"class":143,"line":249},[141,1684,1685],{"class":228},"  id",[141,1687,235],{"class":220},[141,1689,238],{"class":220},[141,1691,1692],{"class":151},"wind",[141,1694,723],{"class":220},[141,1696,1697,1700,1703,1705,1707,1709],{"class":143,"line":281},[141,1698,1699],{"class":220},"  :",[141,1701,1702],{"class":228},"wind-data",[141,1704,235],{"class":220},[141,1706,238],{"class":220},[141,1708,736],{"class":259},[141,1710,723],{"class":220},[141,1712,1713,1715,1718,1720,1722],{"class":143,"line":304},[141,1714,1699],{"class":220},[141,1716,1717],{"class":228},"color-ramp",[141,1719,235],{"class":220},[141,1721,238],{"class":220},[141,1723,1724],{"class":259},"[\n",[141,1726,1727,1730,1732,1734,1736,1739,1741,1744,1746,1748,1750,1752,1754,1756],{"class":143,"line":311},[141,1728,1729],{"class":259},"    [",[141,1731,1226],{"class":355},[141,1733,359],{"class":220},[141,1735,352],{"class":259},[141,1737,1738],{"class":355},"65",[141,1740,359],{"class":220},[141,1742,1743],{"class":355}," 105",[141,1745,359],{"class":220},[141,1747,545],{"class":355},[141,1749,359],{"class":220},[141,1751,1248],{"class":355},[141,1753,1251],{"class":259},[141,1755,359],{"class":220},[141,1757,1758],{"class":397},"   \u002F\u002F Royal blue - calm\n",[141,1760,1761,1763,1765,1767,1769,1771,1773,1776,1778,1781,1783,1785,1787,1789],{"class":143,"line":325},[141,1762,1729],{"class":259},[141,1764,1333],{"class":355},[141,1766,359],{"class":220},[141,1768,352],{"class":259},[141,1770,766],{"class":355},[141,1772,359],{"class":220},[141,1774,1775],{"class":355}," 205",[141,1777,359],{"class":220},[141,1779,1780],{"class":355}," 50",[141,1782,359],{"class":220},[141,1784,1248],{"class":355},[141,1786,1251],{"class":259},[141,1788,359],{"class":220},[141,1790,1791],{"class":397},"    \u002F\u002F Lime green - moderate\n",[141,1793,1794,1796,1798,1800,1802,1805,1807,1809,1811,1814,1816,1818,1820,1822],{"class":143,"line":344},[141,1795,1729],{"class":259},[141,1797,1438],{"class":355},[141,1799,359],{"class":220},[141,1801,352],{"class":259},[141,1803,1804],{"class":355},"255",[141,1806,359],{"class":220},[141,1808,1280],{"class":355},[141,1810,359],{"class":220},[141,1812,1813],{"class":355}," 0",[141,1815,359],{"class":220},[141,1817,1248],{"class":355},[141,1819,1251],{"class":259},[141,1821,359],{"class":220},[141,1823,1824],{"class":397},"    \u002F\u002F Orange - strong\n",[141,1826,1827,1829,1831,1833,1835,1837,1839,1841,1843,1845,1847,1849,1851,1853],{"class":143,"line":370},[141,1828,1729],{"class":259},[141,1830,1473],{"class":355},[141,1832,359],{"class":220},[141,1834,352],{"class":259},[141,1836,1804],{"class":355},[141,1838,359],{"class":220},[141,1840,1813],{"class":355},[141,1842,359],{"class":220},[141,1844,1813],{"class":355},[141,1846,359],{"class":220},[141,1848,1248],{"class":355},[141,1850,1251],{"class":259},[141,1852,359],{"class":220},[141,1854,1855],{"class":397},"      \u002F\u002F Red - extreme\n",[141,1857,1858,1860],{"class":143,"line":383},[141,1859,637],{"class":259},[141,1861,723],{"class":220},[141,1863,1864,1866,1869,1871,1873,1876,1878,1880,1883,1885],{"class":143,"line":389},[141,1865,1699],{"class":220},[141,1867,1868],{"class":228},"speed-range",[141,1870,235],{"class":220},[141,1872,238],{"class":220},[141,1874,1875],{"class":259},"[",[141,1877,356],{"class":355},[141,1879,359],{"class":220},[141,1881,1882],{"class":355}," 40",[141,1884,365],{"class":259},[141,1886,723],{"class":220},[141,1888,1889],{"class":143,"line":394},[141,1890,1891],{"class":259},"\u002F>\n",[126,1893,1895],{"id":1894},"pre-rendered-wind-texture","Pre-rendered Wind Texture",[99,1897,1898],{},"For weather API outputs that provide pre-rendered wind textures:",[131,1900,1902],{"className":211,"code":1901,"language":213,"meta":136,"style":136},"\u003CVLayerWindParticle\n  id=\"wind\"\n  image-url=\"https:\u002F\u002Fexample.com\u002Fwind-texture.png\"\n  :bounds=\"[-180, -90, 180, 90]\"\n  :u-min=\"-50\"\n  :u-max=\"50\"\n  :v-min=\"-50\"\n  :v-max=\"50\"\n\u002F>\n",[138,1903,1904,1910,1922,1936,1972,1989,2004,2021,2036],{"__ignoreMap":136},[141,1905,1906,1908],{"class":143,"line":144},[141,1907,221],{"class":220},[141,1909,707],{"class":224},[141,1911,1912,1914,1916,1918,1920],{"class":143,"line":249},[141,1913,1685],{"class":228},[141,1915,235],{"class":220},[141,1917,238],{"class":220},[141,1919,1692],{"class":151},[141,1921,723],{"class":220},[141,1923,1924,1927,1929,1931,1934],{"class":143,"line":281},[141,1925,1926],{"class":228},"  image-url",[141,1928,235],{"class":220},[141,1930,238],{"class":220},[141,1932,1933],{"class":151},"https:\u002F\u002Fexample.com\u002Fwind-texture.png",[141,1935,723],{"class":220},[141,1937,1938,1940,1942,1944,1946,1948,1950,1953,1955,1957,1960,1962,1964,1966,1968,1970],{"class":143,"line":304},[141,1939,1699],{"class":220},[141,1941,881],{"class":228},[141,1943,235],{"class":220},[141,1945,238],{"class":220},[141,1947,1875],{"class":259},[141,1949,855],{"class":220},[141,1951,1952],{"class":355},"180",[141,1954,359],{"class":220},[141,1956,435],{"class":220},[141,1958,1959],{"class":355},"90",[141,1961,359],{"class":220},[141,1963,458],{"class":355},[141,1965,359],{"class":220},[141,1967,586],{"class":355},[141,1969,365],{"class":259},[141,1971,723],{"class":220},[141,1973,1974,1976,1979,1981,1983,1985,1987],{"class":143,"line":311},[141,1975,1699],{"class":220},[141,1977,1978],{"class":228},"u-min",[141,1980,235],{"class":220},[141,1982,238],{"class":220},[141,1984,855],{"class":220},[141,1986,766],{"class":355},[141,1988,723],{"class":220},[141,1990,1991,1993,1996,1998,2000,2002],{"class":143,"line":325},[141,1992,1699],{"class":220},[141,1994,1995],{"class":228},"u-max",[141,1997,235],{"class":220},[141,1999,238],{"class":220},[141,2001,766],{"class":355},[141,2003,723],{"class":220},[141,2005,2006,2008,2011,2013,2015,2017,2019],{"class":143,"line":344},[141,2007,1699],{"class":220},[141,2009,2010],{"class":228},"v-min",[141,2012,235],{"class":220},[141,2014,238],{"class":220},[141,2016,855],{"class":220},[141,2018,766],{"class":355},[141,2020,723],{"class":220},[141,2022,2023,2025,2028,2030,2032,2034],{"class":143,"line":370},[141,2024,1699],{"class":220},[141,2026,2027],{"class":228},"v-max",[141,2029,235],{"class":220},[141,2031,238],{"class":220},[141,2033,766],{"class":355},[141,2035,723],{"class":220},[141,2037,2038],{"class":143,"line":383},[141,2039,1891],{"class":259},[99,2041,2042],{},"The texture encodes U\u002FV wind components in the red and green channels respectively.",[126,2044,2046],{"id":2045},"real-time-wind-data","Real-time Wind Data",[131,2048,2050],{"className":211,"code":2049,"language":213,"meta":136,"style":136},"\u003Cscript setup lang=\"ts\">\n  import { ref, onMounted } from 'vue';\n\n  const windData = ref([]);\n\n  const fetchWindData = async () => {\n    \u002F\u002F Fetch from your weather API\n    const response = await fetch('\u002Fapi\u002Fwind-observations');\n    windData.value = await response.json();\n  };\n\n  onMounted(fetchWindData);\n\n  \u002F\u002F Refresh every 5 minutes\n  setInterval(fetchWindData, 5 * 60 * 1000);\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CVMap :options=\"mapOptions\" style=\"height: 500px\">\n    \u003CVLayerWindParticle\n      v-if=\"windData.length > 0\"\n      id=\"wind\"\n      :wind-data=\"windData\"\n      :num-particles=\"16384\"\n      :speed-factor=\"60\"\n    \u002F>\n  \u003C\u002FVMap>\n\u003C\u002Ftemplate>\n",[138,2051,2052,2072,2098,2102,2118,2122,2142,2147,2179,2206,2210,2214,2224,2228,2233,2261,2269,2273,2281,2309,2315,2329,2341,2353,2366,2379,2383,2391],{"__ignoreMap":136},[141,2053,2054,2056,2058,2060,2062,2064,2066,2068,2070],{"class":143,"line":144},[141,2055,221],{"class":220},[141,2057,225],{"class":224},[141,2059,229],{"class":228},[141,2061,232],{"class":228},[141,2063,235],{"class":220},[141,2065,238],{"class":220},[141,2067,241],{"class":151},[141,2069,238],{"class":220},[141,2071,246],{"class":220},[141,2073,2074,2076,2078,2081,2083,2086,2088,2090,2092,2094,2096],{"class":143,"line":249},[141,2075,253],{"class":252},[141,2077,256],{"class":220},[141,2079,2080],{"class":259}," ref",[141,2082,359],{"class":220},[141,2084,2085],{"class":259}," onMounted",[141,2087,263],{"class":220},[141,2089,266],{"class":252},[141,2091,269],{"class":220},[141,2093,213],{"class":151},[141,2095,275],{"class":220},[141,2097,278],{"class":220},[141,2099,2100],{"class":143,"line":281},[141,2101,308],{"emptyLinePlaceholder":307},[141,2103,2104,2106,2108,2110,2113,2116],{"class":143,"line":304},[141,2105,314],{"class":228},[141,2107,406],{"class":259},[141,2109,235],{"class":220},[141,2111,2080],{"class":2112},"s2Zo4",[141,2114,2115],{"class":259},"([])",[141,2117,278],{"class":220},[141,2119,2120],{"class":143,"line":311},[141,2121,308],{"emptyLinePlaceholder":307},[141,2123,2124,2126,2129,2131,2134,2137,2140],{"class":143,"line":325},[141,2125,314],{"class":228},[141,2127,2128],{"class":259}," fetchWindData ",[141,2130,235],{"class":220},[141,2132,2133],{"class":228}," async",[141,2135,2136],{"class":220}," ()",[141,2138,2139],{"class":228}," =>",[141,2141,322],{"class":220},[141,2143,2144],{"class":143,"line":344},[141,2145,2146],{"class":397},"    \u002F\u002F Fetch from your weather API\n",[141,2148,2149,2152,2155,2158,2161,2164,2167,2169,2172,2174,2177],{"class":143,"line":370},[141,2150,2151],{"class":228},"    const",[141,2153,2154],{"class":259}," response",[141,2156,2157],{"class":220}," =",[141,2159,2160],{"class":252}," await",[141,2162,2163],{"class":2112}," fetch",[141,2165,2166],{"class":224},"(",[141,2168,275],{"class":220},[141,2170,2171],{"class":151},"\u002Fapi\u002Fwind-observations",[141,2173,275],{"class":220},[141,2175,2176],{"class":224},")",[141,2178,278],{"class":220},[141,2180,2181,2184,2187,2190,2192,2194,2196,2198,2201,2204],{"class":143,"line":383},[141,2182,2183],{"class":259},"    windData",[141,2185,2186],{"class":220},".",[141,2188,2189],{"class":259},"value",[141,2191,2157],{"class":220},[141,2193,2160],{"class":252},[141,2195,2154],{"class":259},[141,2197,2186],{"class":220},[141,2199,2200],{"class":2112},"json",[141,2202,2203],{"class":224},"()",[141,2205,278],{"class":220},[141,2207,2208],{"class":143,"line":389},[141,2209,386],{"class":220},[141,2211,2212],{"class":143,"line":394},[141,2213,308],{"emptyLinePlaceholder":307},[141,2215,2216,2219,2222],{"class":143,"line":401},[141,2217,2218],{"class":2112},"  onMounted",[141,2220,2221],{"class":259},"(fetchWindData)",[141,2223,278],{"class":220},[141,2225,2226],{"class":143,"line":414},[141,2227,308],{"emptyLinePlaceholder":307},[141,2229,2230],{"class":143,"line":464},[141,2231,2232],{"class":397},"  \u002F\u002F Refresh every 5 minutes\n",[141,2234,2235,2238,2241,2243,2246,2249,2252,2254,2257,2259],{"class":143,"line":507},[141,2236,2237],{"class":2112},"  setInterval",[141,2239,2240],{"class":259},"(fetchWindData",[141,2242,359],{"class":220},[141,2244,2245],{"class":355}," 5",[141,2247,2248],{"class":220}," *",[141,2250,2251],{"class":355}," 60",[141,2253,2248],{"class":220},[141,2255,2256],{"class":355}," 1000",[141,2258,2176],{"class":259},[141,2260,278],{"class":220},[141,2262,2263,2265,2267],{"class":143,"line":550},[141,2264,645],{"class":220},[141,2266,225],{"class":224},[141,2268,246],{"class":220},[141,2270,2271],{"class":143,"line":591},[141,2272,308],{"emptyLinePlaceholder":307},[141,2274,2275,2277,2279],{"class":143,"line":634},[141,2276,221],{"class":220},[141,2278,662],{"class":224},[141,2280,246],{"class":220},[141,2282,2283,2285,2287,2289,2291,2293,2295,2297,2299,2301,2303,2305,2307],{"class":143,"line":642},[141,2284,670],{"class":220},[141,2286,28],{"class":224},[141,2288,675],{"class":228},[141,2290,235],{"class":220},[141,2292,238],{"class":220},[141,2294,682],{"class":151},[141,2296,238],{"class":220},[141,2298,687],{"class":228},[141,2300,235],{"class":220},[141,2302,238],{"class":220},[141,2304,694],{"class":151},[141,2306,238],{"class":220},[141,2308,246],{"class":220},[141,2310,2311,2313],{"class":143,"line":652},[141,2312,704],{"class":220},[141,2314,707],{"class":224},[141,2316,2317,2320,2322,2324,2327],{"class":143,"line":657},[141,2318,2319],{"class":228},"      v-if",[141,2321,235],{"class":220},[141,2323,238],{"class":220},[141,2325,2326],{"class":151},"windData.length > 0",[141,2328,723],{"class":220},[141,2330,2331,2333,2335,2337,2339],{"class":143,"line":667},[141,2332,713],{"class":228},[141,2334,235],{"class":220},[141,2336,238],{"class":220},[141,2338,1692],{"class":151},[141,2340,723],{"class":220},[141,2342,2343,2345,2347,2349,2351],{"class":143,"line":701},[141,2344,729],{"class":228},[141,2346,235],{"class":220},[141,2348,238],{"class":220},[141,2350,736],{"class":151},[141,2352,723],{"class":220},[141,2354,2355,2357,2359,2361,2364],{"class":143,"line":710},[141,2356,744],{"class":228},[141,2358,235],{"class":220},[141,2360,238],{"class":220},[141,2362,2363],{"class":151},"16384",[141,2365,723],{"class":220},[141,2367,2368,2370,2372,2374,2377],{"class":143,"line":726},[141,2369,759],{"class":228},[141,2371,235],{"class":220},[141,2373,238],{"class":220},[141,2375,2376],{"class":151},"60",[141,2378,723],{"class":220},[141,2380,2381],{"class":143,"line":741},[141,2382,774],{"class":220},[141,2384,2385,2387,2389],{"class":143,"line":756},[141,2386,780],{"class":220},[141,2388,28],{"class":224},[141,2390,246],{"class":220},[141,2392,2393,2395,2397],{"class":143,"line":771},[141,2394,645],{"class":220},[141,2396,662],{"class":224},[141,2398,246],{"class":220},[126,2400,2402],{"id":2401},"performance-tips","Performance Tips",[161,2404,2405,2411,2417,2423],{},[164,2406,2407,2410],{},[113,2408,2409],{},"Particle Count",": Start with 8192 particles. Increase to 16384+ for denser coverage on large screens.",[164,2412,2413,2416],{},[113,2414,2415],{},"Max Age",": Lower values (15-20) create shorter trails, higher values (40-60) create longer flowing trails.",[164,2418,2419,2422],{},[113,2420,2421],{},"Speed Factor",": Adjust based on your speed range. Higher factors make particles move faster.",[164,2424,2425,2428,2429,2432],{},[113,2426,2427],{},"Animation",": Set ",[138,2430,2431],{},":animate=\"false\""," to pause animation (useful for static screenshots).",[126,2434,2436],{"id":2435},"how-it-works","How It Works",[187,2438,2439,2448,2454,2463],{},[164,2440,2441,2444,2445,2447],{},[113,2442,2443],{},"IDW Interpolation",": When using ",[138,2446,736],{},", the component generates a wind velocity texture using Inverse Distance Weighting interpolation, creating smooth gradients between observation points.",[164,2449,2450,2453],{},[113,2451,2452],{},"Transform Feedback",": Particles are animated using GPU transform feedback shaders. Each particle reads the wind velocity at its position and moves accordingly.",[164,2455,2456,2459,2460,2462],{},[113,2457,2458],{},"Color Mapping",": Particle colors are determined by the wind speed at their position, mapped through the ",[138,2461,1053],{}," gradient.",[164,2464,2465,2468,2469,2471],{},[113,2466,2467],{},"Particle Lifecycle",": Each particle has a maximum age (",[138,2470,996],{},"). When a particle expires, it's respawned at a random position within the bounds.",[2473,2474,2475],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":136,"searchDepth":249,"depth":249,"links":2477},[2478],{"id":120,"depth":249,"text":121,"children":2479},[2480,2481,2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492],{"id":128,"depth":281,"text":129},{"id":158,"depth":281,"text":159},{"id":181,"depth":281,"text":182},{"id":207,"depth":281,"text":208},{"id":796,"depth":281,"text":797},{"id":1198,"depth":281,"text":1199},{"id":1510,"depth":281,"text":1511},{"id":1586,"depth":281,"text":1587},{"id":1668,"depth":281,"text":1669},{"id":1894,"depth":281,"text":1895},{"id":2045,"depth":281,"text":2046},{"id":2401,"depth":281,"text":2402},{"id":2435,"depth":281,"text":2436},"Animated wind particle visualization with speed-based color ramps","md",null,{},{"title":61,"description":2493},"mgteBfMAp0kdSeEQJmTcML3Rcj14WphKEnvubHKA6TE",[2500,2502],{"title":57,"path":58,"stem":59,"description":2501,"children":-1},"Cloud-Optimized GeoTIFF and satellite imagery visualization",{"title":65,"path":66,"stem":67,"description":2503,"icon":68,"children":-1},"Native MapLibre GL layers and custom derived layers",1781101878363]