{"id":4010,"date":"2022-08-19T11:50:29","date_gmt":"2022-08-19T16:50:29","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/girni\/?p=4010"},"modified":"2026-08-04T11:01:02","modified_gmt":"2026-08-04T16:01:02","slug":"coordenadas-rayo-reflejado-en-perfil-por-tramos","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/coordenadas-rayo-reflejado-en-perfil-por-tramos\/","title":{"rendered":"8. Coordenadas - Rayo reflejado en perfil por tramos"},"content":{"rendered":"\n<p><strong>Referencia<\/strong>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fs-unidades\/optica-rayo-reflejado\/\">Optica \u2013 Rayo reflejado en plano inclinado<\/a><\/p>\n\n\n\n<p>Para el an\u00e1lisis de rayo reflejado en un perfil de terreno, se realiza calculando el punto reflejado para cada tramo del perfil usando como base el algoritmo de <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fs-unidades\/optica-rayo-reflejado\/\">rayo reflejado en plano inclinado<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2022\/08\/rayoReflejadoPorTramos01.png\"><img loading=\"lazy\" decoding=\"async\" width=\"553\" height=\"435\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2022\/08\/rayoReflejadoPorTramos01.png\" alt=\"\" class=\"wp-image-4013\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2022\/08\/rayoReflejadoPorTramos01.png 553w, https:\/\/blog.espol.edu.ec\/girni\/files\/2022\/08\/rayoReflejadoPorTramos01-300x236.png 300w\" sizes=\"auto, (max-width: 553px) 100vw, 553px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Instrucciones en Python<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# rayo incidente y reflejado\n# en perfil por tramos\n# blog.espol.edu.ec\/girni\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# INGRESO\n# posici\u00f3n de antenas tx, rx\nxi = &#x5B;1,11]\nyi = &#x5B;4,2]\n\n# perfil suelo\nsx = &#x5B;1,4,8,11]\nsy = &#x5B;1,0.5,0.4,1]\n\n# PROCEDIMIENTO\ndef reflejotramo(xi,yi,sx,sy):\n    # posici\u00f3n de antenas tx, rx\n    xa,xb = xi\n    ya,yb = yi\n    # perfil suelo\n    xas,xbs = sx\n    sa ,sb  = sy\n    # pendiente de suelo\n    ms = (sb-sa)\/(xbs-xas)\n    bs = sa-ms*xas\n    # punto de reflejo\n    numerador   = bs*(xa+xb)-(xa*yb+xb*ya)+2*ms*xa*xb\n    denominador = 2*bs-(ya+yb)+ms*(xa+xb)\n    xc = numerador\/denominador\n    sc = ms*xc+bs\n    reflejado = &#x5B;]\n    if xc&gt;=xas and xc&lt;=xbs:\n        reflejado = &#x5B;xc,sc]\n    return(reflejado)\n\n# analiza para cada tramo del suelo\nn = len(sx)\nxc = &#x5B;] ; sc = &#x5B;]\nfor k in range(0,n-1,1):\n    sxk = sx&#x5B;k:k+2] # un tramo de suelo\n    syk = sy&#x5B;k:k+2]\n    reflejado = reflejotramo(xi,yi,sxk,syk)\n    if len(reflejado)&gt;0:\n        xc.append(reflejado&#x5B;0])\n        sc.append(reflejado&#x5B;1])\n\n# SALIDA\nprint('puntos reflejados:')\nprint('xc:',xc)\nprint('sc',sc)\n\n# GRAFICA\n# antenas puntos en el plano\nplt.scatter(&#x5B;xi&#x5B;0],xi&#x5B;1]],\n            &#x5B;yi&#x5B;0],yi&#x5B;1]],\n            label='antenas')\nplt.plot(&#x5B;xi&#x5B;0],xi&#x5B;1]],\n         &#x5B;yi&#x5B;0],yi&#x5B;1]],\n         color='green',\n         linestyle='dashed',\n         label='directo')\n# analiza para cada tramo del suelo\nnc = len(sc)\nplt.scatter(xc,sc,color='orange',\n            label='punto reflejo')\n# lineas de rayos\nfor k in range(0,nc,1):\n    # lado izquierdo\n    plt.plot(&#x5B;xi&#x5B;0],xc&#x5B;k]],\n             &#x5B;yi&#x5B;0],sc&#x5B;k]],\n             color='blue',\n             linestyle='dashdot')\n    # lado derecho\n    plt.plot(&#x5B;xc&#x5B;k],xi&#x5B;1]],\n             &#x5B;sc&#x5B;k],yi&#x5B;1]],\n             color='blue',\n             linestyle='dashdot')\n    # etiquetas anotadas\n    #plt.annotate(' reflejo',&#x5B;xc,sc])\n\n# perfil de suelo\nplt.plot(sx,sy,color='brown',\n         label='perfil suelo')\n\n# etiquetas\nplt.legend()\nplt.xlabel('x')\nplt.ylabel('y')\nplt.title('reflexi\u00f3n de rayos en suelo por tramos')\nplt.grid()\n\nplt.show()\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Referencia: Optica \u2013 Rayo reflejado en plano inclinado Para el an\u00e1lisis de rayo reflejado en un perfil de terreno, se realiza calculando el punto reflejado para cada tramo del perfil usando como base el algoritmo de rayo reflejado en plano inclinado. Instrucciones en Python<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1466681],"tags":[],"class_list":["post-4010","post","type-post","status-publish","format-standard","hentry","category-lorawan-propagacion"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/4010","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/comments?post=4010"}],"version-history":[{"count":8,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/4010\/revisions"}],"predecessor-version":[{"id":4792,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/4010\/revisions\/4792"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=4010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=4010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=4010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}