Skip to content

Commit

Permalink
Revert "基于 r/ABraThatFits 的完美计算器 (#920)"
Browse files Browse the repository at this point in the history
This reverts commit e191731.
  • Loading branch information
Cryolitia committed Oct 28, 2023
1 parent e191731 commit 4af8eb9
Showing 1 changed file with 90 additions and 74 deletions.
164 changes: 90 additions & 74 deletions content/zh-cn/cup-calculator.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,90 +24,106 @@ description: "罩杯计算器"

**运算都在您的本地完成,不收集任何数据**

1. 请准备一根软尺并面对镜子,看得到胸部。请脱去衣物。
1. 请直立,放松,用软尺贴合乳房下缘<span style="text-decoration:underline; text-decoration-thickness: 2px;">⊙⊙</span>,水平绕身体一量圈,保持水平、完全不要拉紧: <input type="text" id="und-loose"/> cm
1. 请继续保持水平,稍微拉紧到舒适(内衣应有)的程度: <input type="text" id="und-snug"/> cm
1. 请呼气、彻底拉紧:<input type="text" id="und-tight"/> cm
1. 请直立,放松,用软尺经过乳头<span style="text-decoration:line-through; text-decoration-thickness: 2px;">⊙⊙</span>,绕身体一量圈:<input type="text" id="up-up"/> cm
1. 请鞠躬 90 度:<input type="text" id="up-lean"/> cm
1. 请躺倒 90 度:<input type="text" id="up-down"/> cm
1. 请准备一根软尺并面对镜子,看得到胸部
1. 请直立,放松,用软尺贴合乳房下缘<span style="text-decoration:underline; text-decoration-thickness: 2px;">⊙⊙</span>,水平绕身体一量圈: <input type="text" id="val1"/> cm
1. 请呼气:<input type="text" id="val2"/> cm
1. 请直立,放松,用软尺经过乳头<span style="text-decoration:line-through; text-decoration-thickness: 2px;">⊙⊙</span>,绕身体一量圈:<input type="text" id="val3"/> cm
1. 请俯身 45 度:<input type="text" id="val4"/> cm
1. 请鞠躬 90 度:<input type="text" id="val5"/> cm

<button onclick="cup()" type="submit">提交</button>
国际通用罩杯计算方法:

<ul id="results">
<li>有效胸围、调整围差:<span id="diff"></span></li>
<li>欧式 2 cm 罩杯:<span id="eu"></span></li>
<li>中式 2.5 cm 罩杯:<span id="cn"></span></li>
</ul>
- 下胸围 + 11 cm + n × 2 cm = 胸围

* * *
- 罩杯 n =(胸围 − 下胸围 − 11) / 2

罩杯计算方法:
数字 n 代表罩杯 (A=1、B=2、C=3依此类推)。例如,胸围和下胸围差为15 cm (n=2)表示B罩杯。

- 取“舒适”下胸围作为下胸围,四舍五入到最近的可用尺码。
- 欧盟使用 5 cm 单位,并且减去 10 cm。例如 82 cm 会被转换为 70 cm。
- 中国奶糖派使用 5 cm 单位,但似乎不减去 10 cm。所以 82 cm 会转换为 80 cm。
- “彻底拉紧”不用于实际计算,只用于建议“舒适”程度输入:
- 较宽的下胸围意味着更多的弹性材料,允许使用更小的“舒适”值。一般来说小于 80 cm 者可能需要增加舒适值(向上入),大于 90 cm 者可能需要降低舒适值(向下舍)。
- 如果“彻底拉紧”下胸围和“舒适”的差别小于 5 cm,考虑增加“舒适”值
- 如果“彻底拉紧”下胸围和“舒适”的差别大于 10 cm,考虑降低“舒适”值
- 取 (站 + 鞠 &times; 2 + 卧 &times; 2) / 5 加权平均为胸围(AMAB 加权法)
- 胸围减去“不拉紧”下胸围,为初始围差
- 围差加入调整值,(“不拉紧” - 胸围) / 2
- 围差四舍五入到最近的可用尺码。围差到罩杯的字母转换取决于地区:
- 欧盟使用的围差间隔为 2 cm,即围差 ≥ 2 cm 为 A、≥ 4 cm 为 B,以此类推。
- 中国、美国使用的围差间隔为 2.5 cm,即围差 ≥ 2.5 cm 为 A、≥ 5 cm 为 B,以此类推。
- 较大围差者会遇到[不规律的尺寸标号(DD、DDD等)](https://en.wikipedia.org/w/index.php?title=Bra_size&oldid=1181336261#The_meaning_of_cup_sizes_varies),此计算器不做处理。
中国尺码计算方法:

你的罩杯字母是不是有点大?这太正常了!
* 罩杯应该描述的就是围差,不是体积。也许你的奶子应该坐在杯里,现在的衣服只是把它们压到腋下去了。脱去衣物就是为了避免现有胸罩的干扰!
*[正确大小](https://www.reddit.com/r/ABraThatFits/wiki/beginners_guide/#wiki_believe_your_size)比较一下,是不是差不多?
* 网络上有将 11 cm 或四英寸围差挪进下胸围的做法,但这种做法会导致杯过小,见[White & Scurr 2012](https://sci-hub.se/https://www.tandfonline.com/doi/abs/10.1080/00140139.2011.647096)。Kohl、奶糖派等成熟厂商的计算器已抛弃该算法。
- 下胸围 + 11cm + n × 2cm = 胸围

算法来源:
* r/ABraThatFits [通用算法](https://www.reddit.com/r/ABraThatFits/wiki/manual_sizing_guide/)[MTF 指南](https://www.reddit.com/r/ABraThatFits/wiki/mtfguide/)
* r/ABraThatFits 有[在线计算器](https://www.abrathatfits.org/calculator.php),但是非开源、需要向后端提交数据,请慎用。此计算器的输出已用于参考。“EU”输出为 5 cm 底围间隔、2.5 cm 围差间隔,有 10 cm 调整。
* [奶糖派尺码助手](https://sizehelp.naitangpai.com/h5pc/pc.html),非开源、需要向后端提交数据,请慎用。输出为 5 cm 底围间隔、约 2.5 cm 围差间隔,无 10 cm 调整。
- 罩杯 n = (胸围 - 下胸围 - 5) / 2.5

<script type="text/javascript">
function stringify_cup(n) {
var cup_to_letter = ["AA,买少女小背心去吧", "A", "B", "C", "D", "E", "F", "G"];
if (isNaN(n))
return "数值错误,再检查检查吧";
if (n < 0)
return "小妹妹你还不需要穿内衣哦";
if (n > cup_to_letter.length)
return "你胸大你说了算(罩杯超出 MtF.wiki 预设)";
return cup_to_letter[n];
}
function cup() {
var $id = window.document.getElementById.bind(window.document);

// Calculate
var und_l = Number($id("und-loose").value) || NaN;
var und_s = Number($id("und-snug").value) || NaN;
var und_t = Number($id("und-tight").value) || NaN;
var up_u = Number($id("up-up").value) || NaN;
var up_l = Number($id("up-lean").value) || NaN;
var up_d = Number($id("up-down").value) || NaN;
数字 n 代表罩杯 (A=1、B=2、C=3依此类推)。例如,胸围和下胸围差为10 cm (n=2)表示B罩杯。

// EU, CN use 5 cm bands
var under = Math.round(und_s / 5) * 5;
var upper = (up_u * 2 + up_l + up_d * 2) / 5;
var diff = upper - und_l + (und_l - under) / 2;
<button onclick="cup()" type="submit">提交</button>

var cup_eu = Math.floor(diff / 2);
var cup_cn = Math.floor(diff / 2.5);
<p id="result">国际通用罩杯: </p>
<p id="resultcn">中国尺码: </p>

$id("diff").innerText = under + ", " + diff.toFixed(2);
if (isNaN(diff)) {
$id("diff").innerText = "数值错误,再检查检查吧";
<script type="text/javascript">
function cup() {
//Initial
window.document.getElementById("result").innerHTML = "国际通用罩杯: ";
window.document.getElementById("resultcn").innerHTML = "国内罩杯: ";
//Calculate
var val1 = Number(window.document.getElementById("val1").value) || NaN;
var val2 = Number(window.document.getElementById("val2").value) || NaN;
var val3 = Number(window.document.getElementById("val3").value) || NaN;
var val4 = Number(window.document.getElementById("val4").value) || NaN;
var val5 = Number(window.document.getElementById("val5").value) || NaN;
var under = (val1 + val2 )/2;
var upper = (val3 + val4 + val5)/3;
var cup = ( upper - under - 11 ) / 2;
var cupcn = upper - under;
var valid = true;
//Judgement
if (isNaN(cup)) {
window.document.getElementById("result").innerHTML = "数值错误,再检查检查吧";
valid = false;
} else if (cup<=0){
window.document.getElementById("result").innerHTML += "小妹妹你还不需要穿内衣哦";
valid = false;
} else if (cup<1){
cup = "AA,买少女小背心去吧";
} else if (cup<=2){
cup = "A";
} else if (cup<3){
cup = "B";
} else if (cup<4){
cup = "C";
} else if (cup<5){
cup = "D";
} else if (cup<6){
cup = "E";
}else{
window.document.getElementById("result").innerHTML += "你胸大你说了算(罩杯超出 MtF.wiki 预设)";
valid = false;
}
if (isNaN(cupcn)) {
window.document.getElementById("resultcn").innerHTML = "数值错误,再检查检查吧";
valid = false;
} else if (cupcn <= 5) {
window.document.getElementById("resultcn").innerHTML += "小妹妹你还不需要穿内衣哦";
valid = false;
} else if (cupcn <= 7.5) {
cupcn = "AA,买少女小背心去吧";
} else if (cupcn <= 10) {
cupcn = "A";
} else if (cupcn <= 12.5) {
cupcn = "B";
} else if (cupcn <= 15) {
cupcn = "C";
} else if (cupcn <= 17.5) {
cupcn = "D";
} else if (cupcn <= 20) {
cupcn = "E";
} else {
window.document.getElementById("resultcn").innerHTML += "你胸大你说了算(罩杯超出 MtF.wiki 预设)";
valid = false;
}
if (!valid)
return;
if (isNaN(under)) {
window.document.getElementById("result").innerHTML = "数值错误,再检查检查吧";
window.document.getElementById("resultcn").innerHTML = "数值错误,再检查检查吧";
return;
} else{
under = Math.ceil(under/5)*5;
}
window.document.getElementById("result").innerHTML += under + cup;
window.document.getElementById("resultcn").innerHTML += under + cupcn;
return;
}

// EU performs -10 adjustment, see https://www.reddit.com/r/ABraThatFits/wiki/sizing_systems/
// CN Candy Pie does not do the same
$id("eu").innerText = '' + (under - 10) + stringify_cup(cup_eu);
$id("cn").innerText = '' + (under) + stringify_cup(cup_cn);
}

</script>

0 comments on commit 4af8eb9

Please sign in to comment.