Search
Write a publication
Pull to refresh
4
0
Send message

В жёлтом дизайне грунтовки явно отделялись цветом от асфальта. Теперь всё серое.

Deepseek - да. Двумя способами: через подобие треугольников и методом координат с параметризацией. Затем я попросил нарисовать схему - отказ. Взамен я попросил код для отрисовки картинки (промпт в примере), но deepseek выдал интерактивную программку.

Задал следующий промпт (по мотивам домашки с дочкой):

Через точку М, взятую на медиане AD треугольника ABC, и вершину В проведена прямая, пересекающая сторону АС в точке К. Найдите отношение AK/KC если М — середина отрезка AD. Создай html код Android для визуализации задачи.

Deepseek:

Все вершины и точку M можно двигать. Соотношения пересчитываются.
Все вершины и точку M можно двигать. Соотношения пересчитываются.

Yandex 5 pro:

После десятка попыток...
После десятка попыток...

Deepseek просто поразил, если честно...

Скрытый текст

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

<title>Геометрическая задача</title>

<style>

* {

margin: 0;

padding: 0;

box-sizing: border-box;

}

body {

overflow: hidden;

touch-action: none;

background: #f5f5f5;

font-family: Arial, sans-serif;

}

canvas {

position: fixed;

touch-action: none;

}

.description {

position: fixed;

top: 15px;

left: 15px;

right: 15px;

background: rgba(255,255,255,0.95);

padding: 15px;

border-radius: 10px;

font-size: 14px;

line-height: 1.4;

box-shadow: 0 3px 8px rgba(0,0,0,0.15);

z-index: 100;

}

.ratio-container {

position: fixed;

top: 160px;

left: 15px;

display: flex;

flex-direction: column;

gap: 10px;

z-index: 100;

}

.ratio-box {

background: rgba(255,255,255,0.95);

padding: 12px 18px;

border-radius: 8px;

font-size: 16px;

box-shadow: 0 2px 6px rgba(0,0,0,0.1);

min-width: 140px;

}

</style>

</head>

<body>

<div class="description">

Через точку М, взятую на медиане AD треугольника ABC, и вершину В проведена прямая,

пересекающая сторону АС в точке К. Найдите отношение AK/KC при различных отношениях AM/MD

</div>

<div class="ratio-container">

<div class="ratio-box">AK/KC = <span id="ak-kc">0.50</span></div>

<div class="ratio-box">AM/MD = <span id="am-md">1.00</span></div>

</div>

<canvas id="mainCanvas"></canvas>

<script>

const canvas = document.getElementById('mainCanvas');

const ctx = canvas.getContext('2d');

const akKcSpan = document.getElementById('ak-kc');

const amMdSpan = document.getElementById('am-md');

// Инициализация размеров

function initSizes() {

canvas.width = window.innerWidth;

canvas.height = window.innerHeight;

}

initSizes();

window.addEventListener('resize', initSizes);

// Конфигурация точек

const pointsConfig = {

A: {x: 0.2, y: 0.8, label: 'A'},

B: {x: 0.8, y: 0.8, label: 'B'},

C: {x: 0.5, y: 0.2, label: 'C'},

M: {t: 0.5, label: 'M'}

};

// Расчет абсолютных координат

function calculateAbsoluteCoords() {

const toAbs = (x, y) => ({

x: x * canvas.width,

y: y * canvas.height

});

const A = {...toAbs(pointsConfig.A.x, pointsConfig.A.y), label: 'A'};

const B = {...toAbs(pointsConfig.B.x, pointsConfig.B.y), label: 'B'};

const C = {...toAbs(pointsConfig.C.x, pointsConfig.C.y), label: 'C'};

// Медиана AD

const D = {

x: (B.x + C.x) / 2,

y: (B.y + C.y) / 2,

label: 'D'

};

// Позиция M на AD

const M = {

x: A.x + (D.x - A.x) * pointsConfig.M.t,

y: A.y + (D.y - A.y) * pointsConfig.M.t,

label: 'M'

};

return {A, B, C, D, M};

}

// Поиск пересечения прямых

function findIntersection(line1, line2) {

const [x1, y1, x2, y2] = line1;

const [x3, y3, x4, y4] = line2;

const denominator = (y4 - y3)*(x2 - x1) - (x4 - x3)*(y2 - y1);

if(Math.abs(denominator) < 0.001) return null;

const ua = ((x4 - x3)*(y1 - y3) - (y4 - y3)*(x1 - x3)) / denominator;

return {

x: x1 + ua*(x2 - x1),

y: y1 + ua*(y2 - y1)

};

}

// Основное обновление

function updateScene() {

const {A, B, C, D, M} = calculateAbsoluteCoords();

// Расчет отношений

const amMdRatio = pointsConfig.M.t / (1 - pointsConfig.M.t);

amMdSpan.textContent = amMdRatio.toFixed(2);

// Поиск точки K

const BM_line = [B.x, B.y, M.x, M.y];

const AC_line = [A.x, A.y, C.x, C.y];

const K = findIntersection(BM_line, AC_line);

// Обновление отношения AK/KC

if(K) {

const AK = Math.hypot(K.x - A.x, K.y - A.y);

const KC = Math.hypot(C.x - K.x, C.y - K.y);

akKcSpan.textContent = (AK/KC).toFixed(2);

}

renderScene(A, B, C, D, M, K);

}

// Отрисовка сцены

function renderScene(A, B, C, D, M, K) {

ctx.clearRect(0, 0, canvas.width, canvas.height);

// Рисование треугольника

ctx.beginPath();

ctx.moveTo(A.x, A.y);

ctx.lineTo(B.x, B.y);

ctx.lineTo(C.x, C.y);

ctx.closePath();

ctx.strokeStyle = '#34495e';

ctx.lineWidth = 4;

ctx.stroke();

// Медиана AD

ctx.setLineDash([10, 6]);

ctx.beginPath();

ctx.moveTo(A.x, A.y);

ctx.lineTo(D.x, D.y);

ctx.strokeStyle = '#7f8c8d';

ctx.stroke();

// Линия BM-K

if(K) {

ctx.setLineDash([]);

ctx.beginPath();

ctx.moveTo(B.x, B.y);

ctx.lineTo(K.x, K.y);

ctx.strokeStyle = '#e74c3c';

ctx.lineWidth = 3;

ctx.stroke();

}

// Отрисовка точек

const drawPoint = (point, color) => {

ctx.beginPath();

ctx.arc(point.x, point.y, 14, 0, Math.PI*2);

ctx.fillStyle = color;

ctx.fill();

ctx.strokeStyle = 'white';

ctx.lineWidth = 2;

ctx.stroke();

};

drawPoint(A, '#3498db');

drawPoint(B, '#2ecc71');

drawPoint(C, '#e67e22');

drawPoint(D, '#95a5a6');

drawPoint(M, '#9b59b6');

if(K) drawPoint(K, '#f1c40f');

// Подписи точек с умным позиционированием

ctx.fillStyle = '#2c3e50';

ctx.font = '16px Arial';

ctx.textBaseline = 'middle';

[A, B, C, D, M].forEach(p => {

let offsetX = 20;

let offsetY = 0;

// Особое позиционирование для точки C

if(p.label === 'C') {

offsetX = -25;

offsetY = 20;

ctx.textBaseline = 'top';

}

// Позиционирование для других точек

else {

ctx.textBaseline = 'middle';

}

ctx.fillText(p.label, p.x + offsetX, p.y + offsetY);

});

if(K) {

ctx.fillText('K', K.x + 20, K.y);

}

}

// Обработка касаний

let activePoint = null;

canvas.addEventListener('touchstart', (e) => {

const touch = e.touches[0];

const rect = canvas.getBoundingClientRect();

const x = (touch.clientX - rect.left) / rect.width;

const y = (touch.clientY - rect.top) / rect.height;

const {A, B, C, M} = calculateAbsoluteCoords();

const points = [

{key: 'A', x: A.x/canvas.width, y: A.y/canvas.height},

{key: 'B', x: B.x/canvas.width, y: B.y/canvas.height},

{key: 'C', x: C.x/canvas.width, y: C.y/canvas.height},

{key: 'M', x: M.x/canvas.width, y: M.y/canvas.height}

];

// Поиск ближайшей точки

const touchThreshold = 0.06;

let minDistance = Infinity;

points.forEach(point => {

const dx = x - point.x;

const dy = y - point.y;

const distance = Math.sqrt(dx*dx + dy*dy);

if(distance < touchThreshold && distance < minDistance) {

minDistance = distance;

activePoint = point.key;

}

});

});

canvas.addEventListener('touchmove', (e) => {

if(!activePoint) return;

e.preventDefault();

const touch = e.touches[0];

const rect = canvas.getBoundingClientRect();

const x = (touch.clientX - rect.left) / rect.width;

const y = (touch.clientY - rect.top) / rect.height;

if(activePoint === 'M') {

// Перемещение точки M вдоль AD

const {A, D} = calculateAbsoluteCoords();

const vecX = D.x - A.x;

const vecY = D.y - A.y;

const length = Math.hypot(vecX, vecY);

if(length === 0) return;

// Проекция точки касания на AD

const touchX = x * canvas.width - A.x;

const touchY = y * canvas.height - A.y;

const t = (touchX*vecX + touchY*vecY) / (length*length);

pointsConfig.M.t = Math.max(0, Math.min(1, t));

} else {

// Перемещение вершин треугольника

pointsConfig[activePoint].x = Math.max(0.1, Math.min(0.9, x));

pointsConfig[activePoint].y = Math.max(0.1, Math.min(0.9, y));

}

updateScene();

});

canvas.addEventListener('touchend', () => {

activePoint = null;

});

// Запуск приложения

updateScene();

</script>

</body>

</html>

Белковые нанороботы, которые создают и контролируют жизнь?

Пока скважина закупорена парафиновой пробкой, то под пробкой накапливается избыточное давление. Когда бригада по ремонту скважины пробивает (растепляет) пробку, то велик риск получить приток (фонтан) из скважины. В обвязке скважины при ремонте есть выкидные линии, через которые и сбрасывается избыточное давление скважины. Но если они (линии) не закреплены якорями, то при сбросе давления их (линии) разбросает в стороны, что очень опасно.

Основная проблема гидроразрыва - потенциальное сообщение (переток) высоконапорных пластов с минерализированной водой и низконапорных водоносных горизонтов с пресной водой

Дед мой отвечал за подготовку скважин к спуску ядерных зарядов. Был под подпиской о неразглашении и честным человеком - о своём участие в этом проекте рассказывал мне уже незадолго перед смертью. С его слов руководство Башнефти на фоне падающей добычи было готово на что угодно и отчёты о радиоактивном фоне могли быть искажены.

А для для нового Atlasa будет подходить такой девайс?

график Bz
график Bz

@aurorahunters_bot ещё и графики рисует...

А сама статья у Вас получилась подробная и понятная, спасибо!

На днях выкладывали реальные записи с боевыми действиями Су-34. Для выхода на точку сброса бомб - 6 минут постоянных противоракетных маневров по уходу от "Патриотов" при подсказке с земли и истребителей поддержки. Так что маневр пока необходим.

На маркетах продают недорогие пенопластовые коробки с крышкой - очень хорошо сохраняют холод

Небо - это интересно! Но вот только в последнее время 2GIS жутко тормозит на S21ultra. И маршруты в режиме "пешеход" строит неправильно.

Как бывший житель Крайнего севера:

1) Сигналка с автозапуском по температуре охлаждающей жидкости. Недорого, эффективно. Но вонь во дворе и износ ДВС от постоянной работы на холостых.

2) Электрический "кипятильник" в картер. Мощность 1...3 кВт*ч. Разогревает масло в картере и, частично, весь ДВС. Питание от удлинителя из квартиры. Поэтому на Северах во дворе у каждого "своё" место напротив своего окна.

3) Webasto. Это каталитический обогреватель охлаждающей жидкости. Можно подключить удалённый запуск. Самый эффективный, но дорогой способ.

4) Дополнительно: электрические грелки аккумулятора, амортизаторов, КПП и т.д.

ТОП-3 ВИНК:

  • Мы не платим подрядчикам (KPI топов завязан на прибыль!)

  • У подрядчиков жёсткий дефицит рабочих (За 80 т.р. на вахту на Север дураков нет)

  • Падает обьем и качество работ

  • ТОПы - менеджерам в "дочке": "Усилить контроль над подрядчиками!"

  • Рядовые менеджеры в мыле, но качество работ всё равно падает

  • ТОПы не платят премии рядовым менеджерам в "дочке"

  • Рядовые менеджеры "дочки" разбегаются

  • HR по-старинке ищут "выпускник топ-вуза с опытом 15 лет, не старше 25 лет, опыт работы зарубежом..."

  • Никто не откликается. А если и откликается, то 40+ лет, а таких не берут, так как у руководителя "дочки" есть KPI по среднему возрасту сотрудников

  • А качество работы всё падает...

  • HR нанимают "топ-тиктокера", который рекламирует работу в северных городах.

Некоторое время назад в одной крупной нефтегазовой компании собралась на годовой форум функция, ну не важно какая)) И зачем-то организаторы попросили НН выступить с докладом о ЗП данной функции по РФ. И началась презентация: средняя 70к, медиана 55К и т.п. В зале тишина... Ведь даже самый простой клерк имеет ЗП от 120, а уж у присутствующих на форуме от 250К, а у средних руководителей от 500+... И присутствующие знают, что из офисов компании в регионах никого не соблазнить на переезд в СПБ даже за 200К, так человек не хочет всю ЗП на ипотеку тратить.

Я это к тому, что НН - это только статистика по массовой занятости. А нормальные вакансии НН не доступны для статистики

Большинство нефтяных месторождений, в том числе и про которые идёт речь в заметке, многопластовые. Т.е скважиной вскрывается сразу несколько пластов. Некоторые из платов содержат рентабельное количество УВ для добычи, а некоторые пласты нерентабельны. Содержание УВ определяется на стадии бурения скважины геофизическими методами. Но в 70-80-е годы точность была невысокой и могли не идентифицироваться потенциально рентабельные пласты. Вот и натренировали нейросетку по косвенным признакам, по окружению, искать пропущенные интервалы. Так как речь идёт о доразведке действующего месторождения (не требуются инфраструктурные затраты), то даже 100000 т - это хороший результат

Попробал разок тариф вместе. Через три минуту подсели четыре студента. Я не стал продолжать поездку и вышел. Описал ситуацию в техподдержку. Через час ответ: "Водитель и второй пассажир не подтвердили Вашу версию".

Идея норм, но Яндекс - монополист и ему фиолетово на качество услуги.

Есть ли какая-то процедура обратной связи до автобусных парков? Например: обычно в будний день работает 100 автобусов (геометок), а если сегодня геометок только 50

Занимается ли ваша компания талевыми канатами в процессах бурения скважин?

Information

Rating
9,147-th
Registered
Activity