JavaScript ::: JavaScript para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como calcular a distância entre dois pontos no plano em JavaScript - JavaScript para Geometria Analítica e Álgebra LinearQuantidade de visualizações: 5519 vezes |
|
Como calcular a Distância Euclidiana entre dois pontos usando JavaScript Em várias aplicações envolvendo geometria, principalmente no desenvolvimento de jogos em JavaScript, é comum nos depararmos com a necessidade de calcular a distância entre dois pontos A e B. Nessa dica mostrarei como efetuar esse cálculo no R2, ou seja, no plano. Em outra dica eu abordo o cálculo no R3 (espaço). Comece analisando a imagem abaixo: ![]() Veja que temos um ponto A (x = 3; y = 6) e um ponto B (x = 9; y = 4). Para determinarmos a distância entre esses dois pontos no plano cartesiano, temos que realizar a análise tanto no sentido do eixo das abscissas (x) quanto no do eixo das ordenadas (y). Veja a fórmula: \[d_{AB} = \sqrt{\left(x_b - x_a\right)^2 + \left(y_b - y_a\right)^2}\] Agora, jogando os valores dos dois pontos da fórmula nós teremos: \[d_{AB} = \sqrt{\left(9 - 3\right)^2 + \left(6 - 4\right)^2}\] Que resulta em 6,32 (aproximadamente). E agora veja o código JavaScript completo que define as coordenadas dos dois pontos e mostra a distância entre eles:
<html>
<head>
<title>Estudos JavaScript</title>
</head>
<body>
<script type="text/javascript">
// função que permite calcular a distância
// entre dois pontos no plano (R2)
function distancia2d(x1, y1, x2, y2){
var a = x2 - x1;
var b = y2 - y1;
var c = Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2));
return c;
}
// vamos definir os dados do primeiro ponto
var x1 = 3;
var y1 = 6;
// vamos ler os dados do segundo ponto
var x2 = 9;
var y2 = 4;
// vamos obter a distância entre eles
var distancia = distancia2d(x1, y1, x2, y2);
document.writeln("Distância entre os dois pontos: " +
distancia);
</script>
</body>
</html>
Ao executarmos este código JavaScript nós teremos o seguinte resultado: Distância entre os dois pontos: 6.324555320336759 |
C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Operadores de Manipulação de Bits (Bitwise Operators) |
Exercícios Resolvidos de C++ - Como converter de decimal para binário usando os operadores de bits em C++Quantidade de visualizações: 982 vezes |
|
Aprenda a programar com a nossa lista de exercícios de C++ e desafios de programação. Pergunta/Tarefa: Escreva um programa C++ para pede para o usuário informar um número decimal e faça a conversão para binário usando os operadores de bits. Sua saída deverá ser parecida com: Informe um número decimal: 9 O número binário é: 00000000000000000000000000001001 Veja a resolução completa para o exercício em C++, comentada linha a linha:
#include <string>
#include <iostream>
using namespace std;
// vamos definir o tamanho do vetor para guardar
// os dígitos do número binário
#define TAM_INT sizeof(int) * 8
int main(int argc, char *argv[]){
// variáveis para ajudar a resolver o problema
int decimal, indice, i;
// vetor para guardar o número binário
int binario[TAM_INT];
// vamos pedir para o usuário informar um decimal inteiro
cout << "Informe um número decimal: ";
cin >> decimal;
// ajustamos índice para o último elemento do vetor
indice = TAM_INT - 1;
// enquanto índice for maior ou igual a 0
while(indice >= 0){
// vamos guardar o bit menos significativo LSB
binario[indice] = decimal & 1;
// diminuímos o índice
indice--;
// desloca bits para a direita uma posição
decimal = decimal >> 1;
}
// agora vamos exibir o número binário
cout << "O número binário é: ";
for(i = 0; i < TAM_INT; i++){
cout << binario[i];
}
cout << "\n\n";
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
|
PHP ::: Fundamentos da Linguagem ::: Estruturas de Controle |
PHP do básico ao avançado - Como usar o laço foreach() para percorrer os elementos de um vetor ou matriz em PHPQuantidade de visualizações: 22041 vezes |
O laço foreach (para cada) da linguagem PHP é muito útil quando precisamos percorrer os elementos de um array (vetor ou matriz). Veja um exemplo:
<html>
<head>
<title>Estudando PHP</title>
</head>
<body>
<?php
$valores = array(10, 3, 6, 2, 6);
foreach($valores as $valor){
echo $valor . "<br>";
}
?>
</body>
</html>
Ao executar este código nós teremos o seguinte resultado: 10 3 6 2 6 Aqui cada elemento do array é representado pela variável $valor durante a execução do laço. Veja outra forma do laço foreach que permite acessar também o índice de cada elemento no vetor:
<html>
<head>
<title>Estudando PHP</title>
</head>
<body>
<?php
$valores = array(10, 3, 6, 2, 6);
foreach($valores as $indice => $valor){
echo $indice . " - " . $valor . "<br>";
}
?>
</body>
</html>
Este novo código vai gerar o seguinte resultado: 0 - 10 1 - 3 2 - 6 3 - 2 4 - 6 |
Revit C# ::: Dicas & Truques ::: Tratamento de Erros |
Como corrigir o erro OperationCanceledException em macros e add-ins do Revit C# APIQuantidade de visualizações: 554 vezes |
|
Nesta dica mostrarei como podemos tratar a exceção OperationCanceledException em macros e plug-ins feitos para o Revit usando a Revit C# API. Esta exceção está no namespace Autodesk.Revit.Exceptions e deve ser declarada por seu nome completo, para não ser confundida com System.OperationCanceledException. O erro OperationCanceledException ocorre quando uma operação é cancelada de forma inesperada. Por exemplo, no código abaixo nós pedimos para o usuário selecionar um grupo e, em seguida, informar um ponto na área de desenho do Revit para que o grupo seja copiado e colocado no ponto indicado. Se o usuário clicar com o botão direito ou pressionar Esc, a operação é cancelada automaticamente. O tratamento da exceção OperationCanceledException nos permite reagir a isso, indicando ao usuário o melhor caminho a ser seguido. O código apresentado aqui já foi visto em dicas e truques sobre a criação e manipulação de grupos de elementos no Revit usando a Revit C# API. No entanto, no código apresentado eu não fiz o tratamento de exceções. Veja o código Revit C# API completo para o exemplo:
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Structure;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using System.Linq;
namespace Estudos {
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.
TransactionMode.Manual)]
[Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")]
public partial class ThisApplication {
private void Module_Startup(object sender, EventArgs e) {
// vamos obter uma referência ao Document ativo
Document doc = this.ActiveUIDocument.Document;
// Vamos definir um objeto Reference para guardar
// o elemento selecionado pelo usuário
Reference ref_selecionado = null;
// pedimos para o usuário selecionar um grupo
Selection selecao = this.ActiveUIDocument.Selection;
try {
ref_selecionado = selecao.PickObject(ObjectType.Element,
"Selecione um grupo");
Element elem = doc.GetElement(ref_selecionado);
Group group = elem as Group;
// vamos pedir para o usuário selecionar um ponto na área de
// desenho do Revit
XYZ ponto = selecao.PickPoint(
"Selecione um ponto para posicionar o grupo");
// criamos uma nova transação e posicionamos a cópia do
// grupo nas coordenadas indicadas pelo usuário
Transaction transacao = new Transaction(doc);
transacao.Start("Copiar Grupo no Revit");
doc.Create.PlaceGroup(ponto, group.GroupType);
transacao.Commit();
// mostramos o resultado
TaskDialog.Show("Aviso", "O grupo foi copiado com sucesso.");
}
// Se o usuário clicar com o botão direito ou pressionar Esc
catch (Autodesk.Revit.Exceptions.OperationCanceledException ex) {
TaskDialog.Show("Aviso", "Erro: Operação cancelada pelo usuário");
}
catch (Exception ex) {
TaskDialog.Show("Aviso", "Erro: " + ex.Message);
}
}
private void Module_Shutdown(object sender, EventArgs e) {
// para fazer alguma limpeza de memória ou algo assim
}
#region Revit Macros generated code
private void InternalStartup() {
this.Startup += new System.EventHandler(Module_Startup);
this.Shutdown += new System.EventHandler(Module_Shutdown);
}
#endregion
}
}
Se o usuário cancelar a operação, ou seja, não selecionar nenhum grupo (talvez pressionando a tecla Esc), o código reagirá e mostrará a mensagem: Erro: The user aborted the pick operation. Se, em vez de selecionar um grupo, o usuário selecionar um outro elemento, então a mensagem de erro será: Erro: Referência de objeto não definida para uma instância de um objeto. |
Nossas 20 dicas & truques de programação mais populares |
|
Java - Estruturas de Dados em Java - Como inserir nós no início de uma lista singularmente ligada em Java QGIS - Como retornar o título do projeto do QGIS usando PyQGIS e a função title() da classe QgsProject CSS - CSS3 - O que são CSS media queries e como usá-las em suas páginas web para criar designs responsivos |
Você também poderá gostar das dicas e truques de programação abaixo |
|
JavaScript - Como adicionar zeros (ou outro caractere) no início de uma string usando o método padStart() da linguagem JavaScript Java - Java Swing - Como obter a quantidade de colunas em uma JTable usando o método getColumnCount() Delphi - Como usar o Delphi para verificar se um determinado processo do Windows está sendo executado |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





