Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 31.05.2016, 18:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Rise,
спасибо, осталось с одинаковыми точками разобратся
Ответить с цитированием
  #12 (permalink)  
Старый 31.05.2016, 19:17
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

рони, наверное лучше без деления обойтись, а то неточные вычисления могут получиться при сравнении.
if ((points[i]["x"] - points[k]["x"]) * 
	(points[j]["y"] - points[k]["y"]) - 
	(points[j]["x"] - points[k]["x"]) * 
	(points[i]["y"] - points[k]["y"]) == 0) continue;
Ответить с цитированием
  #13 (permalink)  
Старый 31.05.2016, 20:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Rise,
Ответить с цитированием
  #14 (permalink)  
Старый 31.05.2016, 20:06
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

Сообщение от Rise Посмотреть сообщение
рони, наверное лучше без деления обойтись, а то неточные вычисления могут получиться при сравнении.
if ((points[i]["x"] - points[k]["x"]) * 
	(points[j]["y"] - points[k]["y"]) - 
	(points[j]["x"] - points[k]["x"]) * 
	(points[i]["y"] - points[k]["y"]) == 0) continue;
Спасибо! Добавил в код.
Я вообще думал добавить проверку на точки на одной прямой, но вспомнил, что в школе нам говорили что 3 точки на одной прямой тоже образуют треугольник; но у него один угол равен 180 градусов, а остальные два по нулям.
Ответить с цитированием
  #15 (permalink)  
Старый 01.06.2016, 16:50
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

var x = [0,1,0,6],
	y = [2,0,1,6],
	n = x.length;
	
var sqrt = Math.sqrt, 
	pow  = Math.pow;
	
var A, An = n - 2, AB,
	B, Bn = n - 1, BC,
	C, Cn = n - 0, CA,
	P, Pn = [], 
	S, Sn = [];
	
for (A = 0; A < An; A++) {
	
	for (B = A + 1; B < Bn; B++) {
		
		for (C = B + 1; C < Cn; C++) {
				
			if ((x[A] - x[C]) * 
				(y[B] - y[C]) == 
				(x[B] - x[C]) * 
				(y[A] - y[C])) continue;
				
			AB = sqrt(pow(x[A] - x[B], 2)
					+ pow(y[A] - y[B], 2));
				
			BC = sqrt(pow(x[B] - x[C], 2)
					+ pow(y[B] - y[C], 2));
				
			CA = sqrt(pow(x[C] - x[A], 2)
					+ pow(y[C] - y[A], 2));
				
			P = AB + BC + CA;
			Pn.push(P); P /= 2;
				
			S = sqrt(P * (P - AB) * (P - BC) * (P - CA));
			Sn.push(S);
		} 
	}
}
	
console.table({P: Pn, S: Sn});
Ответить с цитированием
  #16 (permalink)  
Старый 01.06.2016, 17:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Rise,
Ответить с цитированием
  #17 (permalink)  
Старый 01.06.2016, 17:16
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

рони,
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой нужен скрипт, чтобы переключение серии работало? Помогите пожалуйста! Andreiom Events/DOM/Window 1 27.08.2015 07:30
Помогите пожалуйста с автозаполнением lightburst Ваши сайты и скрипты 2 10.06.2015 17:36
Слайдер - карусель блоков (помогите пожалуйста) Viktor.Poberezhniy Общие вопросы Javascript 3 22.07.2014 12:46
Помогите пожалуйста вычислить общую сумму katalizator Общие вопросы Javascript 15 22.03.2013 16:26
Помогите пожалуйста правильно написать скрипт raffx Events/DOM/Window 17 16.10.2012 20:31