513 lines
19 KiB
HTML
513 lines
19 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>K/Y/M三链理论交互式可视化</title>
|
||
<script src="https://d3js.org/d3.v7.min.js"></script>
|
||
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
|
||
<style>
|
||
body {
|
||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||
margin: 0;
|
||
padding: 20px;
|
||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||
color: #333;
|
||
}
|
||
|
||
.container {
|
||
max-width: 1200px;
|
||
margin: 0 auto;
|
||
background: rgba(255, 255, 255, 0.95);
|
||
border-radius: 15px;
|
||
padding: 30px;
|
||
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
|
||
}
|
||
|
||
.header {
|
||
text-align: center;
|
||
margin-bottom: 30px;
|
||
}
|
||
|
||
.header h1 {
|
||
color: #2c3e50;
|
||
font-size: 2.5em;
|
||
margin-bottom: 10px;
|
||
text-shadow: 2px 2px 4px rgba(0,0,0,0.1);
|
||
}
|
||
|
||
.header .subtitle {
|
||
color: #7f8c8d;
|
||
font-size: 1.2em;
|
||
margin-bottom: 20px;
|
||
}
|
||
|
||
.controls {
|
||
background: #ecf0f1;
|
||
padding: 20px;
|
||
border-radius: 10px;
|
||
margin-bottom: 30px;
|
||
}
|
||
|
||
.slider-container {
|
||
margin: 15px 0;
|
||
}
|
||
|
||
.slider-label {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
margin-bottom: 5px;
|
||
}
|
||
|
||
.slider {
|
||
width: 100%;
|
||
height: 8px;
|
||
border-radius: 4px;
|
||
outline: none;
|
||
}
|
||
|
||
.k-slider { background: linear-gradient(to right, #1f77b4, #aec7e8); }
|
||
.y-slider { background: linear-gradient(to right, #2ca02c, #98df8a); }
|
||
.m-slider { background: linear-gradient(to right, #d62728, #ff9896); }
|
||
|
||
.visualization-area {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr;
|
||
gap: 20px;
|
||
margin-bottom: 30px;
|
||
}
|
||
|
||
.chart-container {
|
||
background: white;
|
||
border-radius: 10px;
|
||
padding: 15px;
|
||
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
|
||
}
|
||
|
||
.chart-title {
|
||
text-align: center;
|
||
font-weight: bold;
|
||
margin-bottom: 10px;
|
||
color: #2c3e50;
|
||
}
|
||
|
||
.info-panel {
|
||
background: #34495e;
|
||
color: white;
|
||
padding: 20px;
|
||
border-radius: 10px;
|
||
margin-top: 20px;
|
||
}
|
||
|
||
.chain-info {
|
||
display: flex;
|
||
justify-content: space-around;
|
||
text-align: center;
|
||
margin: 20px 0;
|
||
}
|
||
|
||
.chain-card {
|
||
background: rgba(255, 255, 255, 0.1);
|
||
padding: 15px;
|
||
border-radius: 8px;
|
||
width: 30%;
|
||
}
|
||
|
||
.chain-card.k { border-left: 4px solid #1f77b4; }
|
||
.chain-card.y { border-left: 4px solid #2ca02c; }
|
||
.chain-card.m { border-left: 4px solid #d62728; }
|
||
|
||
.civilization-selector {
|
||
display: flex;
|
||
gap: 10px;
|
||
margin: 15px 0;
|
||
flex-wrap: wrap;
|
||
}
|
||
|
||
.civilization-btn {
|
||
padding: 8px 15px;
|
||
border: none;
|
||
border-radius: 20px;
|
||
background: #bdc3c7;
|
||
cursor: pointer;
|
||
transition: all 0.3s;
|
||
}
|
||
|
||
.civilization-btn.active {
|
||
background: #3498db;
|
||
color: white;
|
||
}
|
||
|
||
.civilization-btn:hover {
|
||
transform: translateY(-2px);
|
||
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="container">
|
||
<div class="header">
|
||
<h1>👑 K/Y/M三链理论可视化平台</h1>
|
||
<div class="subtitle">权力符号考古学的交互式探索工具</div>
|
||
</div>
|
||
|
||
<div class="controls">
|
||
<h3>三链权重调节</h3>
|
||
|
||
<div class="slider-container">
|
||
<div class="slider-label">
|
||
<span>K链(秩序)权重: <span id="k-value">0.33</span></span>
|
||
<span style="color: #1f77b4;">宇宙的"主程序",负责空间秩序</span>
|
||
</div>
|
||
<input type="range" min="0" max="100" value="33" class="slider k-slider" id="k-slider">
|
||
</div>
|
||
|
||
<div class="slider-container">
|
||
<div class="slider-label">
|
||
<span>Y链(道德)权重: <span id="y-value">0.33</span></span>
|
||
<span style="color: #2ca02c;">"执行者",负责道德和物理操作</span>
|
||
</div>
|
||
<input type="range" min="0" max="100" value="33" class="slider y-slider" id="y-slider">
|
||
</div>
|
||
|
||
<div class="slider-container">
|
||
<div class="slider-label">
|
||
<span>M链(信仰)权重: <span id="m-value">0.34</span></span>
|
||
<span style="color: #d62728;">"信仰",负责时间预测和救赎</span>
|
||
</div>
|
||
<input type="range" min="0" max="100" value="34" class="slider m-slider" id="m-slider">
|
||
</div>
|
||
|
||
<div class="civilization-selector">
|
||
<button class="civilization-btn active" data-civ="shang">商朝(K链主导)</button>
|
||
<button class="civilization-btn" data-civ="zhou">周朝(Y链主导)</button>
|
||
<button class="civilization-btn" data-civ="maya">玛雅(M链主导)</button>
|
||
<button class="civilization-btn" data-civ="inca">印加(Y链特色)</button>
|
||
<button class="civilization-btn" data-civ="rome">罗马(K链过度)</button>
|
||
<button class="civilization-btn" data-civ="balanced">均衡发展</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="visualization-area">
|
||
<div class="chart-container">
|
||
<div class="chart-title">三链功能关系图</div>
|
||
<div id="triangle-chart"></div>
|
||
</div>
|
||
|
||
<div class="chart-container">
|
||
<div class="chart-title">三链权重雷达图</div>
|
||
<div id="radar-chart"></div>
|
||
</div>
|
||
|
||
<div class="chart-container">
|
||
<div class="chart-title">文明发展轨迹</div>
|
||
<div id="timeline-chart"></div>
|
||
</div>
|
||
|
||
<div class="chart-container">
|
||
<div class="chart-title">符号关联网络</div>
|
||
<div id="network-chart"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="info-panel">
|
||
<h3>当前文明诊断</h3>
|
||
<div id="diagnosis-text">选择或调整文明类型查看详细分析...</div>
|
||
|
||
<div class="chain-info">
|
||
<div class="chain-card k">
|
||
<h4>K链分析</h4>
|
||
<div id="k-analysis">秩序建立程度:中等</div>
|
||
</div>
|
||
<div class="chain-card y">
|
||
<h4>Y链分析</h4>
|
||
<div id="y-analysis">道德实践水平:中等</div>
|
||
</div>
|
||
<div class="chain-card m">
|
||
<h4>M链分析</h4>
|
||
<div id="m-analysis">信仰体系强度:中等</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script>
|
||
// 三链数据定义
|
||
const chainData = {
|
||
shang: { k: 0.6, y: 0.2, m: 0.2, name: "商朝", desc: "K链过度主导,秩序建立但道德实践不足" },
|
||
zhou: { k: 0.3, y: 0.5, m: 0.2, name: "周朝", desc: "Y链道德实践主导,建立德治体系" },
|
||
maya: { k: 0.2, y: 0.3, m: 0.5, name: "玛雅", desc: "M链信仰体系主导,时间测算极致化" },
|
||
inca: { k: 0.3, y: 0.5, m: 0.2, name: "印加", desc: "Y链山地道德特色,实践智慧突出" },
|
||
rome: { k: 0.5, y: 0.3, m: 0.2, name: "罗马", desc: "K链秩序过度复杂化,系统脆弱性增加" },
|
||
balanced: { k: 0.33, y: 0.33, m: 0.34, name: "均衡发展", desc: "三链功能均衡,文明韧性最强" }
|
||
};
|
||
|
||
// 当前选中的文明
|
||
let currentCivilization = 'balanced';
|
||
|
||
// 初始化图表
|
||
function initCharts() {
|
||
updateCharts();
|
||
|
||
// 绑定滑块事件
|
||
document.getElementById('k-slider').addEventListener('input', updateFromSliders);
|
||
document.getElementById('y-slider').addEventListener('input', updateFromSliders);
|
||
document.getElementById('m-slider').addEventListener('input', updateFromSliders);
|
||
|
||
// 绑定文明选择按钮
|
||
document.querySelectorAll('.civilization-btn').forEach(btn => {
|
||
btn.addEventListener('click', function() {
|
||
document.querySelectorAll('.civilization-btn').forEach(b => b.classList.remove('active'));
|
||
this.classList.add('active');
|
||
currentCivilization = this.dataset.civ;
|
||
loadCivilizationData(currentCivilization);
|
||
});
|
||
});
|
||
}
|
||
|
||
// 从滑块更新数据
|
||
function updateFromSliders() {
|
||
const kVal = parseInt(document.getElementById('k-slider').value) / 100;
|
||
const yVal = parseInt(document.getElementById('y-slider').value) / 100;
|
||
const mVal = parseInt(document.getElementById('m-slider').value) / 100;
|
||
|
||
document.getElementById('k-value').textContent = kVal.toFixed(2);
|
||
document.getElementById('y-value').textContent = yVal.toFixed(2);
|
||
document.getElementById('m-value').textContent = mVal.toFixed(2);
|
||
|
||
updateCharts(kVal, yVal, mVal);
|
||
updateDiagnosis(kVal, yVal, mVal);
|
||
}
|
||
|
||
// 加载文明数据
|
||
function loadCivilizationData(civ) {
|
||
const data = chainData[civ];
|
||
document.getElementById('k-slider').value = data.k * 100;
|
||
document.getElementById('y-slider').value = data.y * 100;
|
||
document.getElementById('m-slider').value = data.m * 100;
|
||
|
||
updateFromSliders();
|
||
}
|
||
|
||
// 更新所有图表
|
||
function updateCharts(k = 0.33, y = 0.33, m = 0.34) {
|
||
updateTriangleChart(k, y, m);
|
||
updateRadarChart(k, y, m);
|
||
updateTimelineChart();
|
||
updateNetworkChart();
|
||
}
|
||
|
||
// 更新三角形图表
|
||
function updateTriangleChart(k, y, m) {
|
||
const data = [{
|
||
type: 'scatterternary',
|
||
mode: 'markers',
|
||
a: [k * 100],
|
||
b: [y * 100],
|
||
c: [m * 100],
|
||
marker: {
|
||
size: 20,
|
||
color: 'gold',
|
||
line: { width: 2, color: 'black' }
|
||
},
|
||
text: [`K:${k.toFixed(2)} Y:${y.toFixed(2)} M:${m.toFixed(2)}`],
|
||
hoverinfo: 'text'
|
||
}];
|
||
|
||
const layout = {
|
||
ternary: {
|
||
sum: 100,
|
||
aaxis: { title: 'K链(秩序)', color: '#1f77b4' },
|
||
baxis: { title: 'Y链(道德)', color: '#2ca02c' },
|
||
caxis: { title: 'M链(信仰)', color: '#d62728' }
|
||
},
|
||
title: '三链功能平衡图',
|
||
showlegend: false
|
||
};
|
||
|
||
Plotly.newPlot('triangle-chart', data, layout);
|
||
}
|
||
|
||
// 更新雷达图
|
||
function updateRadarChart(k, y, m) {
|
||
const data = [{
|
||
type: 'scatterpolar',
|
||
r: [k, y, m, k],
|
||
theta: ['秩序建立', '道德实践', '信仰体系', '秩序建立'],
|
||
fill: 'toself',
|
||
line: { color: '#3498db' },
|
||
fillcolor: 'rgba(52, 152, 219, 0.3)'
|
||
}];
|
||
|
||
const layout = {
|
||
polar: {
|
||
radialaxis: {
|
||
visible: true,
|
||
range: [0, 1]
|
||
}
|
||
},
|
||
showlegend: false
|
||
};
|
||
|
||
Plotly.newPlot('radar-chart', data, layout);
|
||
}
|
||
|
||
// 更新时间线图表
|
||
function updateTimelineChart() {
|
||
// 简化的时间线数据
|
||
const data = [
|
||
{ civilization: '商朝', start: -1600, end: -1046, k: 0.6, y: 0.2, m: 0.2 },
|
||
{ civilization: '周朝', start: -1046, end: -256, k: 0.3, y: 0.5, m: 0.2 },
|
||
{ civilization: '罗马', start: -27, end: 476, k: 0.5, y: 0.3, m: 0.2 },
|
||
{ civilization: '玛雅', start: 200, end: 900, k: 0.2, y: 0.3, m: 0.5 },
|
||
{ civilization: '印加', start: 1200, end: 1533, k: 0.3, y: 0.5, m: 0.2 }
|
||
];
|
||
|
||
const traces = data.map(civ => ({
|
||
x: [civ.start, civ.end],
|
||
y: [civ.civilization, civ.civilization],
|
||
mode: 'lines',
|
||
line: {
|
||
color: `rgb(${Math.round(civ.k * 255)}, ${Math.round(civ.y * 255)}, ${Math.round(civ.m * 255)})`,
|
||
width: 8
|
||
},
|
||
name: civ.civilization,
|
||
hoverinfo: 'text',
|
||
text: `${civ.civilization}<br>K:${civ.k} Y:${civ.y} M:${civ.m}`
|
||
}));
|
||
|
||
const layout = {
|
||
title: '文明发展时间线',
|
||
xaxis: { title: '时间(公元前/公元)' },
|
||
yaxis: { title: '文明' },
|
||
showlegend: false
|
||
};
|
||
|
||
Plotly.newPlot('timeline-chart', traces, layout);
|
||
}
|
||
|
||
// 更新网络图表
|
||
function updateNetworkChart() {
|
||
// 简化的网络数据
|
||
const nodes = [
|
||
{ id: '昆仑', group: 'K', x: 0, y: 0 },
|
||
{ id: '大禹', group: 'Y', x: 1, y: 0 },
|
||
{ id: '玛雅', group: 'M', x: 0.5, y: 1 },
|
||
{ id: '秩序', group: 'K', x: -1, y: 0 },
|
||
{ id: '道德', group: 'Y', x: 2, y: 0 },
|
||
{ id: '信仰', group: 'M', x: 0.5, y: 2 }
|
||
];
|
||
|
||
const links = [
|
||
{ source: '昆仑', target: '秩序', value: 0.8 },
|
||
{ source: '大禹', target: '道德', value: 0.9 },
|
||
{ source: '玛雅', target: '信仰', value: 0.8 },
|
||
{ source: '秩序', target: '道德', value: 0.6 },
|
||
{ source: '道德', target: '信仰', value: 0.5 }
|
||
];
|
||
|
||
// 使用D3.js创建力导向图
|
||
const svg = d3.select('#network-chart').html('').append('svg')
|
||
.attr('width', 400)
|
||
.attr('height', 300);
|
||
|
||
// 简化的力导向图实现
|
||
const simulation = d3.forceSimulation(nodes)
|
||
.force('link', d3.forceLink(links).id(d => d.id).distance(100))
|
||
.force('charge', d3.forceManyBody().strength(-300))
|
||
.force('center', d3.forceCenter(200, 150));
|
||
|
||
const link = svg.append('g')
|
||
.selectAll('line')
|
||
.data(links)
|
||
.enter().append('line')
|
||
.attr('stroke-width', d => d.value * 5)
|
||
.attr('stroke', '#999');
|
||
|
||
const node = svg.append('g')
|
||
.selectAll('circle')
|
||
.data(nodes)
|
||
.enter().append('circle')
|
||
.attr('r', 10)
|
||
.attr('fill', d => {
|
||
if (d.group === 'K') return '#1f77b4';
|
||
if (d.group === 'Y') return '#2ca02c';
|
||
return '#d62728';
|
||
});
|
||
|
||
simulation.on('tick', () => {
|
||
link
|
||
.attr('x1', d => d.source.x)
|
||
.attr('y1', d => d.source.y)
|
||
.attr('x2', d => d.target.x)
|
||
.attr('y2', d => d.target.y);
|
||
|
||
node
|
||
.attr('cx', d => d.x)
|
||
.attr('cy', d => d.y);
|
||
});
|
||
}
|
||
|
||
// 更新诊断分析
|
||
function updateDiagnosis(k, y, m) {
|
||
const diagnosis = generateDiagnosis(k, y, m);
|
||
document.getElementById('diagnosis-text').innerHTML = diagnosis.overall;
|
||
document.getElementById('k-analysis').textContent = diagnosis.k;
|
||
document.getElementById('y-analysis').textContent = diagnosis.y;
|
||
document.getElementById('m-analysis').textContent = diagnosis.m;
|
||
}
|
||
|
||
// 生成诊断分析
|
||
function generateDiagnosis(k, y, m) {
|
||
let overall = "";
|
||
let kAnalysis = "";
|
||
let yAnalysis = "";
|
||
let mAnalysis = "";
|
||
|
||
// K链分析
|
||
if (k > 0.5) {
|
||
kAnalysis = "秩序建立过度,可能导致系统僵化";
|
||
} else if (k > 0.3) {
|
||
kAnalysis = "秩序建立良好,系统稳定性强";
|
||
} else {
|
||
kAnalysis = "秩序建立不足,需要加强";
|
||
}
|
||
|
||
// Y链分析
|
||
if (y > 0.5) {
|
||
yAnalysis = "道德实践突出,社会凝聚力强";
|
||
} else if (y > 0.3) {
|
||
yAnalysis = "道德实践适中,社会运行平稳";
|
||
} else {
|
||
yAnalysis = "道德实践不足,需要重视";
|
||
}
|
||
|
||
// M链分析
|
||
if (m > 0.5) {
|
||
mAnalysis = "信仰体系强大,但可能过度依赖";
|
||
} else if (m > 0.3) {
|
||
mAnalysis = "信仰体系适中,精神需求满足";
|
||
} else {
|
||
mAnalysis = "信仰体系薄弱,精神建设需加强";
|
||
}
|
||
|
||
// 总体诊断
|
||
const imbalance = Math.max(k, y, m) - Math.min(k, y, m);
|
||
if (imbalance > 0.3) {
|
||
overall = "⚠️ 三链功能严重失衡,文明韧性面临挑战";
|
||
} else if (imbalance > 0.15) {
|
||
overall = "⚠️ 三链功能存在一定失衡,需要注意调整";
|
||
} else {
|
||
overall = "✅ 三链功能均衡发展,文明韧性良好";
|
||
}
|
||
|
||
overall += `<br>当前权重:K链 ${k.toFixed(2)} | Y链 ${y.toFixed(2)} | M链 ${m.toFixed(2)}`;
|
||
|
||
return { overall, k: kAnalysis, y: yAnalysis, m: mAnalysis };
|
||
}
|
||
|
||
// 页面加载完成后初始化
|
||
document.addEventListener('DOMContentLoaded', initCharts);
|
||
</script>
|
||
</body>
|
||
</html> |